我正在使用Windows窗体。在c#中使用它之后,我是否必须取消订阅按钮事件?
我的C#应用程序包含100 user controls
。当我需要并隐藏其余部分时,我显示/隐藏其中一个100 user controls
。 那些user controls
每个人都有30 buttons
和我订阅button
事件作为构造如下:
public UserControl1()
{
InitializeComponent();
button1.Click += new EventHandler(MyButtonClick);
button2.Click += new EventHandler(MyButtonClick);
.
.
button30.Click += new EventHandler(MyButtonClick);
}
void MyButtonClick(object sender, EventArgs e)
{
// do something
}
所以,当我运行的应用程序的所有100 User controls
订阅30 buttons
事件和一些user controls
订阅到事件,但在使用应用程序期间从不使用它们。
我读了一些关于取消订阅事件here和Here但有些答案说你应该取消订阅,因为它会导致内存泄漏,有人说你不必这样做,所以答案仍然不清楚。
我的问题是我必须退订button
事件后使用它,例如:当我显示/隐藏user control
。如果是,当user control
显示时如何订阅button
事件,如果未显示则取消订阅。
是不是有一个显示/隐藏事件,你可以用来分别附加/分离事件处理程序? – PeteGO
@PeteGO我现在看了一下,我没有找到,甚至没有找到,即使 – Kate
有一个'IsVisibleChanged'事件,你可以使用。 – PeteGO