在 vb.NET 中将按键转换为文本框

Converting a key press to text box in vb.NET

我目前正在使用 Visual Basic 2010 并正在制作一个基本计算器。它应该识别来自数字键盘的击键并将它们视为我计算器上用于数字和操作的按钮。但是,我无法让它工作。

例如,我希望我的程序在按下小键盘 4 时在命令行中显示数字 4,我正在尝试这样做:

    Private Sub BeforeLoad(sender As System.Object, e As System.EventArgs) Handles MyBase.Load, Me.KeyDown
    Me.KeyPreview = True
    If Keys.NumPad4 = True Then
        If (Input AndAlso txtDisplay.Text <> "0") Or Point Then
            txtDisplay.Text += btn4.Text
        Else
            txtDisplay.Text = btn4.Text
            Input = True
        End If
    End If
End Sub

但是,当我启动我的程序并尝试单击数字小键盘 4 时,没有任何显示。对此事的任何帮助将不胜感激。 [已解决]

我的另一个问题是输入按钮 returns 小键盘上的值“1”而不是计算我想要的答案。

Case Keys.Enter
EnterPress(btnEqual)        

Private Sub EnterPress(btn As Button)
    '# Enter Button
    If txtDisplay.Text.Length <> 0 Then
        CalculateTotals()
        Operation = String.Empty
        Point = False
    End If
End Sub

我的完整代码可以在这里找到:http://pastebin.com/dsMCNy3i

这是我的等于按钮的代码:

    Private Sub Master(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEqual.Click
    If ModOp = True Then
        Num2 = Val(txtDisplay.Text)
        txtDisplay.Text = Num1 Mod Num2
    ElseIf txtDisplay.Text.Length <> 0 Then
        CalculateTotals()
        Operation = String.Empty
        Point = False
    End If
End Sub

看来我找到了两个解决方案。

1) 在属性 window 中按钮文本中的数字前放置一个“&”符号。

2) 这段代码对我有用:

    Private Sub Keystrokes(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    Select Case e.KeyCode
        Case Keys.NumPad1
            btn1.PerformClick()
        Case Keys.NumPad2
            btn2.PerformClick()
    End Sub