0

VB.NET では、WinForm フォームに Combobox があります。フォームを使用すると、ユーザーは検索するクエリを入力できます。ユーザーが Enter キーを押すと、データベースに対してクエリが実行され、結果が DataTable として返されます。DataTable は Combobox にバインドされ、ユーザーは探しているオプションを選択できます。

ほとんどの場合、これはうまく機能しています。ただし、コードが複数回実行されていることがわかりました。クエリを書き出して Enter キーを 1 回押すと、コードを 2 回または 3 回実行できます。必要がなければ、同じクエリをデータベースに複数回送信したくありません。コードが複数回実行される理由について何かアイデアや提案はありますか?

これが問題のコードです。罪のない人を保護するために、コンボボックスと関数の名前が変更されました。:)

Private Sub cbx_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles cbx.KeyDown

    Me.Cursor = Cursors.IBeam
    If e.KeyData = Keys.Enter Then
        Me.Cursor = Cursors.WaitCursor
        PerformSearch()
        Me.Cursor = Cursors.Default
    End If
    Me.Cursor = Cursors.Default

End Sub
4

1 に答える 1

1

皮肉なことに、検索の実行後に cbx.Focus() を追加すると、問題が修正されました。これが解決策です。

Private Sub cbx_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles cbx.KeyDown

    Me.Cursor = Cursors.IBeam
    If e.KeyData = Keys.Enter Then
        Me.Cursor = Cursors.WaitCursor
        PerformSearch()
        cbx.Focus()
        Me.Cursor = Cursors.Default
    End If
    Me.Cursor = Cursors.Default

End Sub
于 2008-12-08T22:25:36.290 に答える