首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keyup事件自动触发

问Keyup事件自动触发
EN

Stack Overflow用户
提问于 2013-02-23 11:56:32
回答 1查看 2.2K关注 0票数 0

在我的winforms visual 2010应用程序中,

我有一个按钮和两个组合框(combobox1,combobox2)。

我在按钮中添加了代码,以清除先前在第一个组合框(Combobox1)中输入的数据,并为其设置焦点。

在第一个组合框(combobox1)的keyup事件中,我检查了enter键,如果按下,焦点将移动到下一个组合框(combobox2)。

但我的问题是,当我按下按钮(按回车而焦点在按钮上)时,焦点会直接移动到最后(第二个)组合框(combobox2)。

虽然我只输入了按钮,但combobox1的Keyup事件还是自动触发的。

我怎么才能解决这个问题?

我的代码如下所示

代码语言:javascript
复制
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

更新

当我点击按钮时,问题不会出现,但是当我按回车而焦点在按钮上时,要触发按钮点击事件,就会出现问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-23 12:24:51

解决这一问题的最简单方法是将ComboBox1更改为KeyDown处理程序,而不是键。

发生这种情况的原因是事件的顺序:

  • 按下按钮(输入键)
  • 代码运行(Button2_Click),焦点移动到ComboBox1
  • 按下ComboBox1火灾键
  • 代码运行(ComboFox1_KeyUp),焦点移动到ComboBox2

编辑:更冗长的解释:您按下button1上的enter键,这将导致它的OnKeyDown处理程序运行。当您发布enter键时,焦点是Combobox1,因此它的OnKeyUp处理程序正在运行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15040265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档