【问题标题】:Keyboard input with select case带选择案例的键盘输入
【发布时间】:2013-08-30 20:16:24
【问题描述】:

我正在尝试制作一个基本的计算器,我的按钮带有数字 0-9 和所有数学符号。我想将我的键盘(小键盘)按钮链接到它们,我进行了一些搜索并看到了一些带有“if”语句的示例。 是否可以通过选择案例来做到这一点? 哪个 Key 事件最适合处理键盘输入? KeyUp、KeyDown 还是 KeyPress? KeyPress 给我的错误是“=”不是有效的运算符。

【问题讨论】:

    标签: vb.net keyboard


    【解决方案1】:

    Select Case 肯定可以做到这一点。
    对此最好的按键事件可能是KeyDown,因此用户一按下按键就会点击该按钮。 (如果您使用KeyUp,那么它将等待他们释放密钥,这可能不是他们所期望的。)
    示例:

    Private Sub Form1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        Select Case e.KeyCode
            Case Keys.NumPad1
                Button1.PerformClick()
            Case Keys.NumPad2
                Button2.PerformClick()
            Case Keys.NumPad3
                Button3.PerformClick()
            'Continue adding other keys here'
        End Select
    End Sub
    

    您需要更改按钮的名称以匹配您的代码。
    您可能还需要将表单的KeyPreview 属性设置为True,以便引发KeyDown 事件。 (您可以在设计器中执行此操作)

    【讨论】:

    • 我可以立即调用 'Button1_Click' 事件还是使用 Button1.PerformClick() 更好?
    • PerformClick() 更好!
    • 你应该使用PerformClick(),因为Button1_Click的参数'sender'和'e'与Form1_KeyDown不同。
    【解决方案2】:

    确保在表单的属性中设置了 KeyPreview。

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        Select Case e.KeyCode
            Case Keys.NumPad0
                btn0.PerformClick()
            Case Keys.NumPad1
                btn1.PerformClick()
            Case Keys.NumPad2
                btn2.PerformClick()
            Case Keys.NumPad3
                btn3.PerformClick()
            Case Keys.NumPad4
                btn4.PerformClick()
            Case Keys.NumPad5
                btn5.PerformClick()
            Case Keys.NumPad6
                btn6.PerformClick()
            Case Keys.NumPad7
                btn7.PerformClick()
            Case Keys.NumPad8
                btn8.PerformClick()
            Case Keys.NumPad9
                btn9.PerformClick()
        End Select
      End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 2014-04-21
      • 2013-02-11
      • 2020-06-13
      • 2021-09-10
      • 1970-01-01
      • 2012-11-07
      相关资源
      最近更新 更多