Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C中组合框上的按键事件#_C#_Combobox_Windows Forms Designer - Fatal编程技术网

C# C中组合框上的按键事件#

C# C中组合框上的按键事件#,c#,combobox,windows-forms-designer,C#,Combobox,Windows Forms Designer,我在桌面应用程序中有一个组合框,我试图给它一个按键动作监听器 这是我的密码 private void comboBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { int selectedIndex = combobox.SelectedIndex; if (selec

我在桌面应用程序中有一个组合框,我试图给它一个按键动作监听器

这是我的密码

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);
试一试


KeyEventHandler
位于System.Windows.Forms命名空间中。

除了编译问题之外,我认为您应该使用SelectedIndex Changed处理SelectedIndex
private void Form1_Load(object sender, EventArgs e)
    {
        comboBox1.KeyDown += comboBox1_KeyDown;
    }
事件,因为KeyDown 如果在更改SelectedIndex之前激发

comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;

您的代码出现了问题

在上面的代码行中,您使用
KeyEventArgs
作为事件处理程序方法。但它不是一个事件处理程序方法

相反,您应该使用
KeyEventHandler
,这是处理事件的相应事件处理程序方法

EventArgs

EventArgs
表示包含事件数据的类的基类,并提供用于不包含事件数据的事件的值

事件处理程序方法使用包含事件数据的
EventArgs
实例根据需要执行操作

KeyEventHandler

KeyEventHandler
是处理控件的
KeyUp
KeyDown
事件的方法

类似地,对于
KeyPress
事件,也有
KeyPressEventHandler
方法

因此,您应该将代码更改为:

this.comboBox.KeyDown += 
                  new System.Windows.Forms.KeyEventHandler(this.ComboBox_KeyDown); 

“ContinueBehaviour”是您的组合框的名称?是的,它是组合框的名称
this.combobox.KeyDown += new KeyEventArgs(this.comboBox1_KeyDown);
this.comboBox.KeyDown += 
                  new System.Windows.Forms.KeyEventHandler(this.ComboBox_KeyDown);