2016-11-23 40 views
-2

多個按鍵這是我的計劃:檢測在C#

private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     points++; 
     textbox1.Text = points.ToString(); 
     textbox1.Refresh(); 
    } 

我想要的方案,以提高變量每次按一個鍵,它並不重要哪一個。

現在我的程序甚至沒有開始事件,當我按下一個鍵,所以我不知道該怎麼做。

+2

嘗試改變窗體的'KeyPreview'真 – Pikoh

+1

嘗試重寫的WndProc和趕上包含關鍵infromation –

+1

當選擇你的形式,將只檢測按鍵的每封郵件。您也不需要刷新文本框。 – Brandon

回答

0

試試這個:

protected override void WndProc(ref Message m) 
{ 
    const int WM_KEYDOWN = 0x100; 
    const int WM_KEYUP = 0x101; 
    if(m.Msg == WM_KEYDOWN || m.Msg == WM_KEYUP){ 
     points++; 
     textbox1.Text = points.ToString(); 
     textbox1.Refresh(); 
    } 
    base.WndProc(ref m); 
} 
+0

你試過了嗎?我做了,它不起作用。見[這個答案](http://stackoverflow.com/questions/20408071/form-wm-keydown-and-wm-keyup-messages-arent-captured-in-wndproc) – Pikoh

+0

我嘗試過,併爲我的情況。很難理解爲什麼@傑克爾塔只能通過他的代碼和描述來判斷問題。 –