2013-05-01 27 views
4

我對c#相當陌生,我想要做的第一件事就是通過嘗試Key的組合事件來熟悉該環境。 特別是,alt + k。 我正在致力於Microsoft Visual c#2010 Express。 我想測試該代碼是否工作。 如果發現錯誤,請通知我:)如何開始使用c#來測試keypressed事件?

public void begin(object sender, KeyEventArgs ev) 
{ 
    if (ev.KeyCode == Keys.K && ev.Modifiers == Keys.Alt) 
    { 
     //display a message 
    } 
} 

,但即使我從理論上知道什麼是新的項目,當點擊的提出和他們有什麼用途項目的不同型號,我曾嘗試幾種模式測試該代碼。 總之,我不知道要選擇什麼樣的模型和在哪裏把代碼用於測試那種簡單的代碼,並且更精確地在事件(鍵+鼠標)上使用極簡主義gui。 有人可以幫我告訴我如何具體開始使用c#中的事件?? THKS提前:)

+5

選擇一個WinForms項目 – Steve 2013-05-01 20:19:53

回答

2

MSDN Documentation就是您需要做的一個很好的例子。這裏有幾個重要部分:

  • 從一個簡單的「Windows窗體」應用程序開始。雖然有很多其他類型的應用程序,但WinForms是最簡單的開始。
  • 連接KeyPress事件。在Form構造函數中,您需要告訴它在獲取KeyPress事件時該做什麼。如果你在上面Form1_KeyPress你的問題更改功能begin的名稱(以更準確地描述它做什麼),下面的代碼應該工作:

    this.KeyPress += new KeyPressEventHandler(Form1_KeyPress);

  • 使用KeyPressEventArgs,而不是KeyEventArgs它可能會也可能不會產生巨大的差異,但如果可以的話,最好使用最具體的EventArgs,以便您可以使用特定的屬性。

  • 請注意KeyPressEventArgs.Handled如果您的表單上的其他對象(如按鈕或文本框)上有KeyPress(或某些其他鍵盤事件),則需要說明事件是在那裏處理的,還是應該冒泡到父級(對於您的情況,到表格)。

編輯(感謝@RBarryYoung):

  • 形式構造函數中設置this.KeyPreview = true爲了使您的表單能夠接收在此控件上方提示的子控件(如按鈕和文本框)上發生的鍵盤事件,您需要將此屬性設置爲true以允許表單獲得第一個外觀發生在孩子身上的鍵盤事件。 (注意:當然,如果您希望表單看到這些事件,則此提示和前一個提示僅適用。有時,您可能希望鍵盤快捷鍵被困在子控件中,而不是在父級控件中處理。)
+1

不要忘記將'KeyPreview'設置爲true。 – RBarryYoung 2013-05-01 23:43:02

+0

好吧,我看到更好的感謝,我將從Windows窗體開始,但不清楚一件事,這是什麼語法:「this.KeyPress + = new KeyPressEventHandler(Form1_KeyPress)? – user2305415 2013-05-02 22:25:47

+0

糟糕,我從來沒有完成這句話。只是編輯它。 – 2013-05-03 01:32:23

0

它可以幫助你:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.K && this.AcceptButton == null) 
    { 
     MessageBox.Show("Key K pressed"); 
    } 

    return base.ProcessCmdKey(ref msg, keyData); 
} 

如果在窗體的任何控制按下密鑰K它會檢測並返回MSGBOX

測試,並嘗試讓你的工作辦法。

+1

Thks,在全球範圍內理解您的代碼,但有一個不明確的地方:什麼是AcceptButton == null代表什麼? – user2305415 2013-05-02 22:29:50