在循环中取消释放事件

时间:2016-09-29 11:53:14

标签: c# winforms

我在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); };
            }
        }

这是在搜索者内部,每次有人搜索循环时都会再次分配该功能。因此,当我在函数ClickIdToLoad中放置一个断点时,这会在很多时候停止。

,我需要“删除”功能或类似的东西

1 个答案:

答案 0 :(得分:0)

感谢Chrisk,我使用了这个解决方案:

  

是否可以将ìtem.id保存在您的控件的标记中?看起来这是一个自定义控件,因此您可以在事件处理程序中查询Tag并只调用ClickIdToLoad((int)item.Id)。这样你就不需要保留一堆引用了。 - ChrisK 1小时前

但我并非“未经授权”。

谢谢ChrisK !!