0

我不知道如何为 SO 记录这个问题。我正在用 WinForm 和 C# 编程。向窗口添加了一个组合框并为其编写了事件处理程序。此窗口上的所有其他控件都生成它们的单击事件,但不生成组合框?它应该没有任何内容,但是无论我单击下拉箭头或组合框本身多少次,事件处理程序都不会执行。

private void InitializeComponent()
    {

        // 
        // comboBox1
        // 
            this.comboBox1.AllowDrop = true;
            this.comboBox1.FormattingEnabled = true;
            resources.ApplyResources(this.comboBox1, "comboBox1");
            this.comboBox1.Name = "comboBox1";
            this.comboBox1.SelectedIndexChanged += new System.EventHan(this.comboBox1_SelectedIndexChanged);
        // 
    }

在此先感谢您的帮助。

4

2 回答 2

2

根据您的描述,听起来您只是单击下拉菜单,期望它触发事件。您实际上是在菜单中选择了不同的选项,还是只是单击箭头? 仅在您更改菜单中的选定选项SelectedIndexChanged时触发。此外,在你的代码中,你有这个:

this.comboBox1.SelectedIndexChanged += new System.EventHan(this.comboBox1_SelectedIndexChanged);

实际上是这样吗?那不应该编译。应该:

this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);

编辑:

好吧,我想我知道发生了什么事。您在哪里双击设计器中的控件来连接事件?如果是这样,则连接该控件的默认事件。所以对于一个按钮,默认是Click事件。对于组合框,默认是SelectedIndexChanged事件,而不是“点击”事件。要Click在您的 上连接事件,请ComboBox在设计器中打开表单。然后在设计器中选择 ComboBox,然后按 CTRL + W、P。这将打开控件的属性窗口。单击该窗口顶部的闪电图标,它将显示您可以在控件上使用的所有事件。在列表中找到“Click”并双击它,它将连接事件并将您带到该事件的新处理程序。

于 2012-09-19T21:38:16.417 回答
0
this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);

要不就

this.comboBox1.SelectedIndexChanged += this.comboBox1_SelectedIndexChanged;
于 2012-09-19T21:41:18.303 回答