0

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

在大多数情况下,这工作得很好。但是,我们发现代码正在执行多次。如果我写出查询并按一次 Enter 键,我可以单步执行代码两次或三次。如果不需要,我不想多次向数据库发送相同的查询。为什么代码会多次执行的任何想法或建议?

这是有问题的代码。Combobox 和 Function 名称已更改以保护无辜者。:)

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 回答