[英]KeyPress event on combobox in C#
我在桌面應用程序中有一個組合框,我想給它一個KeyPress操作偵聽器
這是我的代碼
private void comboBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
int selectedIndex = combobox.SelectedIndex;
if (selectedIndex >= 0)
{
switch (selectedIndex)
{
//.......
};
this.Close();
}
}
}
現在我需要將其添加到組合框中,我嘗試類似
this.combobox.KeyDown += new KeyEventArgs(this.comboBox1_KeyDown);
但它不起作用。
您需要為事件添加處理程序,而不是一些參數。 (它甚至可以編譯嗎?)
代替
this.combobox.KeyDown += new KeyEventArgs(this.comboBox1_KeyDown);
嘗試
this.combobox.KeyDown += new KeyEventHandler(this.comboBox1_KeyDown);
KeyEventHandler
在System.Windows.Forms命名空間中。
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.KeyDown += comboBox1_KeyDown;
}
除了編譯問題與否,我認為您應該使用SelectedIndexChanged事件處理SelectedIndex,因為KeyDown如果在SelectedIndex更改之前被觸發。
comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;
您的代碼的問題在於事件處理程序方法和事件之間的連接
this.combobox.KeyDown += new KeyEventArgs(this.comboBox1_KeyDown);
在上面的代碼行中,您將KeyEventArgs
用作事件處理程序方法。 但這不是事件處理程序方法。
相反,您應該使用KeyEventHandler
,它是對應的事件處理程序方法來處理事件。
EventArgs的
EventArgs
代表包含事件數據的類的基類,並提供用於不包含事件數據的事件的值。
EventArgs
實例(包含事件數據)由事件處理程序方法用於根據需要執行操作。
KeyEventHandler
KeyEventHandler
是用於處理Control的KeyUp
或KeyDown
事件的方法。
同樣,對於KeyPress
事件,有KeyPressEventHandler
方法。
因此,您應該將代碼更改為:
this.comboBox.KeyDown +=
new System.Windows.Forms.KeyEventHandler(this.ComboBox_KeyDown);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.