Combobox KeyDown事件处理程序多次触发

时间:2008-12-08 20:45:59

标签: vb.net combobox keydown

在VB.NET中,我在WinForm表单上有一个Combobox。该表单允许用户键入要搜索的查询。当用户点击Enter键时,将对数据库执行查询,结果将作为DataTable返回。然后将DataTable绑定到Combobox,用户可以选择他们正在寻找的选项。

在大多数情况下,这很有效。但是,我们发现代码正在执行多次。如果我写出我的查询并点击Enter键ONCE,我可以单步执行代码两次或三次。如果我不需要,我不想多次向数据库发送相同的查询。有关代码多次执行的任何想法或建议吗?

以下是相关代码。组合框和功能名称已更改为保护无辜者。 :)

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

1 个答案:

答案 0 :(得分: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