2011-12-27 18 views
0

私はvb.netアプリケーションでリッチテキストボックスを使用して、アドレス値を取得するための更新フォームを使用しています。私の更新クエリは、実行時にフォーム上のテキストボックスをループして、どのフィールドに値があり、対応するフィールドがデータベース内で更新されているかを確認することで生成されます。vb.netのリッチテキストボックスのテキストを確認する

For Each x As Control In Me.Controls 

     If x.GetType Is GetType(TextBox) Or x.GetType Is GetType(MaskedTextBox) Or x.GetType Is GetType(RichTextBox) Then 
      If Not x.Name = "party_code" Then 

       'if user has not entered a value in a textbox then incremnets the flag variable 

       If (x.Text = String.Empty) Or ((x.Name = "contact1" Or x.Name = "contact2" Or x.Name = "ptcl") And (x.Text.Trim().EndsWith("-") And x.Text.Trim().StartsWith("-"))) Then 
        flag += 1 
       End If 

       'checks if the user has entered a value in some textbox 

       If (Not x.Text = String.Empty And Not x.Name = "contact1" And Not x.Name = "contact2" And Not x.Name = "ptcl") Or ((x.Name = "contact1" Or x.Name = "contact2" Or x.Name = "ptcl") And Not x.Text.Trim.EndsWith("-")) Then 


        'generates query text for the textbox which contains some value 

        str = str & comma & x.Name & " = @" & x.Name 

        comma = " , " 
       End If 
      End If 
     End If 

    Next 

また、Enterキーを使用して、フォーム上の次のテキストボックスにフォーカスを移動します。フォーカスがアドレスリッチテキストボックスに達し、データベースのアドレスフィールドを更新する必要がなく、Enterキーを押して次のテキストボックスに移動すると、上記のコードで住所リッチテキストボックスに新しい値、つまりEnterキーが追加され、データベース内のアドレスフィールド。どうすればこの問題を取り除くことができますか?フォーカスをシフトすることの背後にある

コード:

Private Sub town_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles town.KeyDown 
    If e.KeyData = Keys.Return Then 
     address.Focus() 
    End If 
End Sub 

Private Sub address_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles address.KeyDown 
    If e.KeyData = Keys.Return Then 
     Button3.Focus() 
    End If 
End Sub 

私はKeyDownイベントを通してそれを扱ってきました..!

+0

明らかにコードあなたの "Enterキーのシフト焦点は" 壊れています。あなたは投稿していませんが、私のクリスタルボールは、HandledまたはSuppressKeyPressプロパティを使用するのを忘れていると言います。 –

+0

フォーカスの移動を処理するkeydownイベントでコードを追加しました...問題について今すぐ教えてください – user944591

答えて

0

town_KeyDown Handleでフォーカスを変更しているので、このようなKeyDownEventを使用するとe.Handledを使用すると、キー入力がさらに処理されなくなります。

すなわち

Private Sub town_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles town.KeyDown 
    If e.KeyData = Keys.Return Then 
     address.Focus() 
     e.Handled = True 
     Exit Sub 
    End If 
End Sub 
+0

は同じことをしましたが、フォーカスがアドレスからボタン3に変わった場合.....つまり、リッチテキストボックスアドレスのkeydownイベントで....ありがとうとにかく – user944591

+0

@ user944591私はあなたが私が何を意味したかを理解しているのを見ます。あなたが 'KeyDown'イベントを自分で処理する時はいつでも、e.Handleを使って無視するようにシステムに指示してください。 –

+0

この場合、e.handleは実際に何の機能を果たすのでしょうか? – user944591

関連する問題