2014-01-16 45 views
2

我添加按鍵事件錯誤的嘗試在C#中做按鍵下壓事件時

private void listView_KeyPress(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Delete) 
    { 
     DeleteContact(); 
    } 
} 

框架自動爲其創建的類:

this.listView.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.listView_KeyPress); 

當編譯我得到一個錯誤System.Windows.Forms.KeyPressEventHandler(this.listView_KeyPress)

No overload for 'listView_KeyPress' matches delegate 'System.Windows.Forms.KeyPressEventHandler' D:\...\MainForm.Designer.cs 

我將不勝感激任何有用的答案,謝謝。

+1

您是否在您擁有的類中定義了方法listView_KeyPress:this.listView.KeyPress + = .... ??? –

+0

再次刪除。您需要KeyDown事件來識別Delete鍵。 –

回答

2

KeyPress事件需要參數KeyPressEventArgs而不是KeyEventArgs

但0123'事件只給你你按的鍵的字符。而DELETE鍵沒有字符。爲此,你應該使用事件KeyDown代替,這個人是給你的邀請碼來代替:

this.listView.KeyDown+= new System.Windows.Forms.KeyPressEventHandler(this.listView_KeyDown); 

private void listView_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Delete) 
    { 
     DeleteContact(); 
    } 
} 
+0

KeyPressEventArgs不包含KeyCode – Mike

+0

@Mike,不,但它包含KeyChar – RononDex

+0

可以請您提供一個簡單的示例如何處理Delete KeyChar? – Mike

0

KeyPressEventHandler代表預計,第二個參數是一個KeyPressEventArgs對象,而不是KeyEventArgs

private void listView_KeyPress(object sender, KeyPressEventArgs e) 

如果您需要使用KeyEventArgs找到的信息,您應改用KeyDown事件。如果是這樣,請注意,如果用戶按住鍵,KeyDown事件可以多次提升。

0

KeyPressEventHandler

private void listView_KeyPress(object sender, KeyEventArgs e) 

有你的簽名將改爲

private void listView_KeyPress(object sender, KeyPressEventArgs e) 
+0

KeyPressEventArgs不包含KeyCode – Mike

0

錯誤。您的處理程序中的e參數應該是KeyPressEventArgs而不是KeyEventArgs