无法添加或删除事件处理程序“方法组”,但设计人员可以

时间:2019-06-02 04:54:17

标签: c# event-handling

当我尝试添加或删除事件处理程序时,错误是“无法将…分配给”方法组”。然而,设计器中的确切代码行可以编译。

我正在填写列表框,以便用户可以选择项目。在我准备好所有内容之前,我不希望触发多个SelectedIndexChange触发。我毫不费力地将数字上下编码以防止其触发,但是我无法对列表框进行编码,并且被迫使用信号量来防止发生不需要的事情。我查看了VS2017版本“ xxx.Designer.cs”,并将确切的代码行复制并粘贴到了“ xx.cs”中,但出现了该错误。

        {
            cb_AppNames_SelectedIndexChanged -= new System.EventHandler(this.cb_AppNames_SelectedIndexChanged);
            FillAppBox();
            cb_AppNames_SelectedIndexChanged += new System.EventHandler(this.cb_AppNames_SelectedIndexChanged);

这是Designer.cs中的代码

            // cb_SelProj
            // 
            this.cb_SelProj.FormattingEnabled = true;
            this.cb_SelProj.Location = new System.Drawing.Point(86, 25);
            this.cb_SelProj.Name = "cb_SelProj";
            this.cb_SelProj.Size = new System.Drawing.Size(279, 21);
            this.cb_SelProj.TabIndex = 0;
            this.cb_SelProj.SelectedIndexChanged += new System.EventHandler(this.cb_SelProj_SelectedIndexChanged);```

fixme1.png shows error messaged and fixme2 shows code that has no err
![1](http://stateson.net/images/fixme1.png)
![2](http://stateson.net/images/fixme1.png)


2 个答案:

答案 0 :(得分:0)

一个事件(如SelectedIndexChanged)就像一个回调列表,在事件发生时被调用。如果在填充列表框之前不想/不需要此事件,则不要按设计器添加回调,而应在填充数据后在代码中添加回调。

在您的示例中,您没有使用与Designer中相同的代码。设计者会添加方法 b_SelProj_SelectedIndexChanged。在您的代码中,您尝试删除并添加事件 cb_AppNames_SelectedIndexChanged本身。这是行不通的。您只能在事件中添加方法或从事件中删除方法。

答案 1 :(得分:0)

您基本上是正确的,但实际问题是(1)大约在凌晨3点看到此内容,(2)无法获得.png文件显示在此论坛中-仍然不知道我做错了什么,以及(3)由于无法在“大屏幕”中看到.png,因此我没有注意到我使用的是“ _”而不是“。”。当我尝试编写后续代码

this.cb_AppNames.SelectedIndexChanged -= new System.EventHandler(this.cb_AppNames_SelectedIndexChanged);

我在VS2017中使用小字体进行编码,虽然在这里很明显,但没有看到问题:

this.cb_AppNames.SelectedIndexChanged -= new System.EventHandler(this.cb_AppNames_SelectedIndexChanged);
this.cb_AppNames_SelectedIndexChanged -= new System.EventHandler(this.cb_AppNames_SelectedIndexChanged);

也许不是那么简单。我什至无法使代码段以正确的顺序显示。当主持人讽刺地编辑我的帖子时,我以为我在askubuntu遇到了问题,但是我终于明白了。不知道这里出了什么问题,而且不是凌晨3点。最终获得了正确的格式!!!不用抱怨了,非常感谢这个论坛的出现。