由于我在发布图片方面没有很高的声誉,因此我要提出一个很大的问题。
我有三个Windows窗体,每次创建窗体时,事件的执行都会增加。
1. Form1 (MainForm)
在这里,我称第二个包含用户控件的窗体(SubForm)。
2. Form2 (子窗体)
在这里,我通过单击用户控件来调用第二个窗体(ChildForm)。
3. Form3 (ChildForm)
它包含一个确定按钮。
这是我的问题。
这是第一种形式的代码(MainForm)
private void button1_Click(object sender, EventArgs e)
{
SubForm obj = new SubForm ();
obj.ShowDialog();
}
这是包含用户控件的第二种形式的代码(SubForm)
// Event generation
UserControl1.MouseUp += new EventHandler(this.Node_Click);
// Event that calls the ChildForm
private void Node_Click(object sender, EventArgs e)
{
ChildForm obj = new ChildForm();
obj.ShowDialog();
}
这是第一种形式的代码(MainForm)
private void btnOK_Click(object sender, EventArgs e)
{
this.Close();
}
有人知道为什么会这样吗?
最佳答案
由于您正在调用UserControl1.MouseUp
,因此我认为您已将该事件声明为static
。因此,即使您关闭了第二个窗体(不关闭第一个窗体),也不会清除该事件。为此,您需要Unsubscribe
事件。
使用第二种形式的Form_Closing
事件对事件进行Unsubscribe
。
private void SubForm_FormClosing(object sender, FormClosingEventArgs e)
{
UserControl1.MouseUp -= new EventHandler(this.Node_Click);
}