Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在vb.NET中将按键转换为文本框_Vb.net_Visual Studio 2010_Keypress - Fatal编程技术网

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

在vb.NET中将按键转换为文本框,vb.net,visual-studio-2010,keypress,Vb.net,Visual Studio 2010,Keypress,我目前正在使用Visual Basic 2010,正在制作一个基本计算器。它应该能够识别来自numpad的击键,并将其视为计算器上用于数字和运算的按钮。然而,我无法让它工作 例如,当按下numpad 4时,我希望我的程序在命令行中显示数字4,我正在尝试这样做: Private Sub BeforeLoad(sender As System.Object, e As System.EventArgs) Handles MyBase.Load, Me.KeyDown Me.KeyPr

我目前正在使用Visual Basic 2010,正在制作一个基本计算器。它应该能够识别来自numpad的击键,并将其视为计算器上用于数字和运算的按钮。然而,我无法让它工作

例如,当按下numpad 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
Private-Sub-BeforeLoad(发送方作为System.Object,e作为System.EventArgs)处理MyBase.Load、Me.KeyDown
Me.KeyPreview=True
如果Keys.NumPad4=True,则
如果(输入并同时显示txtDisplay.Text“0”)或点,则
txtDisplay.Text+=btn4.Text
其他的
txtDisplay.Text=btn4.Text
输入=真
如果结束
如果结束
端接头
但是,当我启动程序并尝试单击numpad4时,什么也没有显示。我们将非常感谢您对此事的任何帮助。[已解决]

我的另一个问题是enter按钮在numpad上返回一个值“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
Case键。输入
EnterPress(btnEqual)
专用子进站按钮(btn As按钮)
“#输入按钮
如果txtDisplay.Text.Length为0,则
计算器()
Operation=String.Empty
点=假
如果结束
端接头
我的全部代码可以在这里找到:

以下是“我的相等”按钮的代码:

    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
Private Sub-Master(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理btnEqual。单击
如果ModOp=True,则
Num2=Val(txtDisplay.Text)
txtDisplay.Text=Num1 Mod Num2
ElseIf txtDisplay.Text.Length 0然后
计算器()
Operation=String.Empty
点=假
如果结束
端接头

看来我找到了两种解决方案

1) 在“属性”窗口中按钮文本中的数字前添加“&”符号

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

您是否已在代码中设置断点并逐步查看它正在执行的操作?您是否使用WinForms?您不能在为
表单加载设置的方法中订阅
键下键
。通过事件列表重新创建事件,然后检查
如果e.KeyCode=Keys.numpa4,那么
。我在几周前回答了一个类似的问题:@MaCron:我不知道断点是什么,因为我真的不知道我在做什么,所以不。@GibralterTop:是的@视觉文森特:谢谢你的回答,然而,出于某种原因,这对我不起作用。