【问题标题】:defocus button after clicking it单击后散焦按钮
【发布时间】:2017-08-30 20:48:21
【问题描述】:

在 vb 项目中,我有 3 个按钮(带有按钮外观的复选框)...如果我单击其中 1 个按钮,它将保持选中状态(聚焦),

我会用一个小的射频键盘控制那个程序,我很容易按空格键!!

如何取消选择(失去焦点)该控件以避免按空格键意外激活-停用? 我已经尝试添加一个隐藏按钮,并将其集中在检查按钮的点击事件上”......比如:

newbutton.focus()

但不起作用!,后来我尝试聚焦主窗体,但它也不起作用!

form1.focus()

我也试过了:

Form1.select()

但单击(检查)按钮后仍然无法正常工作,再次单击空格键可以轻松取消选中!避免意外取消选中的正确方法是什么??

谢谢。

【问题讨论】:

  • 只有用户可以交互的东西才能获得焦点——不包括隐藏的控件和表单。将焦点移到另一个控件

标签: vb.net focus


【解决方案1】:

看来您正在使用 WinForm。 Form 作为一个名为ActiveControl 的属性,可以设置为Nothing (null)。在CheckBox.CheckedChanged 处理程序中这样做,将取消关注 CheckBox 并防止您遇到问题。

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
    Me.ActiveControl = Nothing
    ' any other necessary code
End Sub

【讨论】:

    【解决方案2】:

    为什么不完全禁用复选框的 SPACEENTER 键?

    'This contains the list of keys that should be disabled from interacting with your check boxes.
    'You can add or remove keys from this as you like.
    Dim DisabledKeys As New HashSet(Of Keys) From {
        Keys.Enter, Keys.Space
    }
    
    Private Sub CheckBoxes_KeyDown(sender As Object, e As KeyEventArgs) Handles CheckBox1.KeyDown, CheckBox2.KeyDown, CheckBox3.KeyDown
        e.SuppressKeyPress = DisabledKeys.Contains(e.KeyCode)
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-29
      相关资源
      最近更新 更多