循环中的取消委托事件
本文关键字:事件 取消 循环 | 更新日期: 2023-09-27 18:09:22
我在WinForms c#中。我在一个循环中把点击委托给一个函数。
foreach (Class.Item item in _searchName)
{
indexGroup++;
if (indexGroup <= MAX_SEARCHES)
{
myCntrl = (GSSearcher)panelSearch.Controls["gsSearcher" + indexGroup.ToString()];
myCntrl.Visible = true;
myCntrl.SetId = item.Id;
myCntrl.SetText1 = item.Name;
myCntrl.SetText2 = item.Description;
string[] onlyDate = item.DateCreate.ToString().Split(' ');
myCntrl.SetText3 = onlyDate[0].ToString();
//HAY QUE MIRAR ESTO.
myCntrl.MyClick += delegate { ClickIdToLoad(item.Id); };
}
}
这是在搜索器中,每次有人搜索时,循环都会再次赋值该函数。当我给clickidtolload函数设置断点时,很多时候它会停在那里。我需要"取消委托"的功能或类似的东西,一旦已经委托。
多亏了Chrisk,我使用了这个解决方案:
是否有可能保存ìtem。id在您控件的标签中?这似乎是一个自定义控件,因此您可以在事件处理程序中查询Tag,并只需调用clickidtolload ((int)item.Id)。这样你就不需要保存一堆引用了。
但我没有"取消授权"。
谢谢ChrisK ! !