2014-03-02 162 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