2011-10-11 48 views
0

我試圖綁定一個KeyDown事件多鍵改變布爾變量,但我似乎無法弄清楚如何觸發星/星鍵(*),在下面的代碼左Shift鍵:綁定多個鍵KeyDown事件(按Shift + *(星號))

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.Multiply || keyData == (Keys.LShiftKey | Keys.OemQuotes)) 
    { 
     Valgt = true; 
    } 
} 

回答

1

這個答案不會是鍵盤佈局不變,但這會做一個美EN鍵盤上的伎倆。它不健壯,但可以適應您的本地佈局。

if (keyData == Keys.Multiply || keyData == (Keys.Shift | Keys.D8)) 
{ 
    Valgt = true; 
} 

或者您可以使用Control_KeyPress事件

private void Form1_KeyPress(object sender, KeyPressEventArgs e) 
{    
    if (e.KeyChar == '*') 
    { 
     Valgt = true; 
    } 
} 
+0

THX,但我已經採取美國鍵盤考慮爲你建議。我正在尋找一個通用的星號(*):-) – Birdman

+0

我的代碼和你的代碼之間的另一個區別是使用Keys.Shift而不是Keys.LShift。如果你在提議的行打破你的調試器並評估keyData,你會看到Keys.LShift的計算結果爲false,而Keys.Shift爲true。這個解決方案處理的情況是按下NumPad上的*鍵以及Shift和數字8.還有什麼方法可以生成星號嗎? – robowahoo

+0

我正在尋找一個通用的星號鍵檢測。 我有一個丹麥的鍵盤佈局和我的星號是不是位於「8號」按鈕,但不是「單引號/雙引號」旁邊的按鈕,在「Enter」鍵。 我希望通用的解決方案的星號鍵檢測。 – Birdman