在我的winforms visual 2010应用程序中,
我有一个按钮和两个组合框(combobox1,combobox2)。
我在按钮中添加了代码,以清除先前在第一个组合框(Combobox1)中输入的数据,并为其设置焦点。
在第一个组合框(combobox1)的keyup事件中,我检查了enter键,如果按下,焦点将移动到下一个组合框(combobox2)。
但我的问题是,当我按下按钮(按回车而焦点在按钮上)时,焦点会直接移动到最后(第二个)组合框(combobox2)。
虽然我只输入了按钮,但combobox1的Keyup事件还是自动触发的。
我怎么才能解决这个问题?
我的代码如下所示
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'code to perform database action
Me.ComboBox1.Focus()
End Sub
Private Sub ComboBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles ComboBox1.KeyUp
If e.KeyCode = Keys.Enter Then
If Me.ComboBox1.SelectedText = String.Empty Then
ComboBox2.Focus()
End If
End If
End Sub更新
当我点击按钮时,问题不会出现,但是当我按回车而焦点在按钮上时,要触发按钮点击事件,就会出现问题。
发布于 2013-02-23 12:24:51
解决这一问题的最简单方法是将ComboBox1更改为KeyDown处理程序,而不是键。
发生这种情况的原因是事件的顺序:
Button2_Click),焦点移动到ComboBox1ComboFox1_KeyUp),焦点移动到ComboBox2编辑:更冗长的解释:您按下button1上的enter键,这将导致它的OnKeyDown处理程序运行。当您发布enter键时,焦点是Combobox1,因此它的OnKeyUp处理程序正在运行。
https://stackoverflow.com/questions/15040265
复制相似问题