当我尝试添加或删除事件处理程序时,错误是“无法将…分配给”方法组”。然而,设计器中的确切代码行可以编译。
我正在填写列表框,以便用户可以选择项目。在我准备好所有内容之前,我不希望触发多个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)
答案 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点。最终获得了正确的格式!!!不用抱怨了,非常感谢这个论坛的出现。