2014-03-02 42 views
0

我刚刚开始学习VB,并试图熟悉这些方法。这里我试图在每次按下按键时将密钥写入控制台。在KeyDown中输入密钥

Private Sub kd(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 
    Console.WriteLine(e.KeyCode) 
End Sub 

这项工作对于大多数的关键,但奇怪的是我不能让输入工作。我注意到的一件事是,每当我按输入我也“点击”了我在表单中的其中一个按钮。

这里发生了什么?

+0

你有形式的KeyPreview属性设置为True? – jmcilhinney

+0

@jmcilhinney - 我做到了。 –

回答

0

Shift,Enter,Tab,Escape等键是特殊键。他们需要一些不同的命令。

Private Sub Form2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress 
    If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Enter) Then 
     MsgBox("Success!") 
    End If 
End Sub 

并且您正在谈论的那个按钮具有焦点。将焦点设置为使用SetFocus控件

这应该完美无缺!

+0

你如何将注意力集中在表单上?我尝试了'Me.Focus()',但按钮仍然获得焦点。 –

+0

了解主动控制属性 - http://msdn.microsoft.com/en-us/library/system.windows.forms.containercontrol.activecontrol.aspx –

+0

谢谢,我会看看它。 –

0

用户您的控件下来的关键事件,并检查是否有键是输入

Private Sub kd(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 
    IF e.key=key.Enter Then 
     <do your code> 
    Endif 
End Sub