2013-10-25 108 views
0

當多個按鍵同時按下時,如何發送字符串/消息框? 我試過And以及Andalso,但結果是隻有第一個密鑰才需要彈出msgbox。同時按下多個按鍵

Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, _ 
             ByVal keyData As System.Windows.Forms.Keys) _ 
             As Boolean 
     If msg.WParam.ToInt32() = CInt(Keys.ShiftKey) AndAlso CInt(Keys.A) Then 
      MsgBox("Testing") 
      Return True 
     End If 

     Return MyBase.ProcessCmdKey(msg, keyData) 
End Function 
+0

AndAlso CINT(Keys.A)沒有(真正的),只要意思,因爲它始終是真實的(CINT(鑰匙。 A)總是存在)。您必須查找與ShiftKey + A組合關聯的WParam。 – varocarbas

回答

2

你可以簡單地做:

Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, _ 
            ByVal keyData As System.Windows.Forms.Keys) _ 
            As Boolean 
    If keyData = (Keys.Shift Or Keys.A) Then 
     MessageBox.Show("Shift-A") 
     Return True 
    End If 

    Return MyBase.ProcessCmdKey(msg, keyData) 
End Function 

注意,這

+0

是的,這個工程。但我不明白怎麼可能「或」在這種情況下工作。不是「或」是否意味着如果按下任何鍵,條件成立? – rip2444

+0

否。在這種情況下,「Or」正在對兩個數值(Shift和A的鍵代碼)執行**按位操作**。請參閱[位運算](http://msdn.microsoft.com/en-us/library/wz3k228a(v = vs.90).aspx)。 –