vb.net在窗体上检测按键

vb.net在窗体上检测按键,vb.net,keypress,Vb.net,Keypress,我是vb.net新手,正在尝试检测表单上的按键 我在JavaFX中创建了一个监听器,当按下ESC键时,该监听器将关闭应用程序 我没有在vb.net中找到任何使用侦听器的代码示例 我发现了一个代码,用于处理文本框的按键,但用于表单的相同代码失败 对于从任何形式关闭应用程序的函数,我想知道是否需要在模块中声明它?虽然问题的这一部分很高兴知道,但请称之为奖金 我的问题是,为什么该代码没有检测到frmOne上的按键? 检测txtBoxOne中按键的代码按预期运行 Public Class frmOne

我是vb.net新手,正在尝试检测表单上的按键
我在JavaFX中创建了一个监听器,当按下ESC键时,该监听器将关闭应用程序
我没有在vb.net中找到任何使用侦听器的代码示例
我发现了一个代码,用于处理文本框的按键,但用于表单的相同代码失败
对于从任何形式关闭应用程序的函数,我想知道是否需要在模块中声明它?虽然问题的这一部分很高兴知道,但请称之为奖金
我的问题是,为什么该代码没有检测到frmOne上的按键?
检测txtBoxOne中按键的代码按预期运行

Public Class frmOne
Private Sub frmOne_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Me.KeyPress
    'frmOne Property FixedToolWindow
    'frmOne is the Start Up Form
    If Asc(e.KeyChar) > 1 Then
        MessageBox.Show("You Pressed " & e.KeyChar)
    End If
    'If Asc(e.KeyChar) > 1 Then txtBoxOne.Text = "You Pressed"
End Sub

Private Sub txtBoxOne_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtBoxOne.KeyPress
    If Asc(e.KeyChar) = 13 Then
        e.Handled = True
        MsgBox("Error.")
    Else
        e.Handled = False
    End If
End Sub
Private Sub btnToFormTwo_Click(sender As Object, e As EventArgs) Handles btnToFormTwo.Click
    Dim i As Integer
    i = txtBoxOne.Text.Length
    If i = 0 Then
        'txtBoxOne.Text = "Enter"
        MessageBox.Show("Enter Data")
        txtBoxOne.Select()
        Return
    End If
    Dim OBJ As New frmTwo
    OBJ.SPass = txtBoxOne.Text
    OBJ.Show()
    'MyTextBox_Enter()
    txtBoxOne.Clear()
    Me.Hide()
    'Me.Close()'R Click project PassVar Set Start Up Form
    'Best Solution is to have Splash Form as Start Up Form
End Sub
Public Sub MyTextBox_Enter()
    txtBoxOne.Clear()
End Sub
'Private Sub frmOne_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Use code below if pre populated text in txtBoxOne
'Me.ActiveControl = txtBoxOne
'txtBoxOne.Select(txtBoxOne.Text.Length, 0)
'txtBoxOne.Select()

'End Sub

End Class

相同的代码适用于窗体,但如果子控件具有焦点,则默认情况下窗体不会引发键盘事件。您需要将表单的
KeyPreview
属性设置为
True
,在这种情况下,表单将在激活的子控件之前引发这些键盘事件。

@mcilhinney非常感谢您在这里回答了很多vb.net问题。我讨厌问这个问题:人们如何知道在表单上进行设置?我已经阅读了3天的教程,发现很少有资料甚至涉及Visual basic的基本主题每个人都是C#personI,他刚刚在Bing上搜索了“vb.NET表单按键”,这是第二个结果(我发现Bing在.NET方面比Google要好)。这个问题的答案对于C和VB是一样的。我通常建议阅读文档,但我不确定这个解决方案是否显而易见。我记不起我是如何学会这一点的,但我会通过属性窗口和文档查看可用的内容,如果我以后需要的话。看了那篇文章,没有看到。是的,我观察到C#代码非常接近VB.Net。我还有一个坏习惯,就是避免回答超过5年的问题。再次感谢你