由于我声望不高,无法发布图片,因此我详细描述一个大问题。我有三个窗体,每次创建窗体时事件执行次数都会增加。
1. MainForm(Form1)
在此,我调用包含用户控件的第二个窗体(SubForm)。
2. SubForm(Form2)
在此,我通过单击用户控件调用第二个窗体(ChildForm)。
3. ChildForm(Form3)
它包含一个"确定"按钮。
这是我的问题。
- 首先,我打开主窗体(MainForm),然后单击按钮打开第二个窗体(SubForm)。 - 现在,在第二个窗体(SubForm)中,我单击用户控件,显示了第三个窗体(ChildForm)。 - 当我单击第三个窗体(ChildForm)中的"确定"按钮时,该窗体关闭。 - 现在,我关闭第二个窗体(SubForm),而不关闭第一窗体(MainForm),然后再次单击第一窗体(MainForm)中的按钮以打开第二个窗体(SubForm)。 - 现在,我在第二个窗体(SubForm)中单击用户控件,打开了第三个窗体(ChildForm)。 - 现在,当我单击第三个窗体(ChildForm)中的"确定"按钮时,第二个窗体(SubForm)中的事件再次触发,并且第三个窗体(ChildForm)被打开了四次。 - 现在,当我再次关闭第二个窗体(SubForm),然后单击用户控件并选择第三个窗体(ChildForm)时,第三个窗体(ChildForm)会依次打开三次等等。
这是主窗体(MainForm)中的代码。
这里是第一种形式(MainForm)的代码:
有人知道为什么会出现这种情况吗?
1. MainForm(Form1)
在此,我调用包含用户控件的第二个窗体(SubForm)。
2. SubForm(Form2)
在此,我通过单击用户控件调用第二个窗体(ChildForm)。
3. ChildForm(Form3)
它包含一个"确定"按钮。
这是我的问题。
- 首先,我打开主窗体(MainForm),然后单击按钮打开第二个窗体(SubForm)。 - 现在,在第二个窗体(SubForm)中,我单击用户控件,显示了第三个窗体(ChildForm)。 - 当我单击第三个窗体(ChildForm)中的"确定"按钮时,该窗体关闭。 - 现在,我关闭第二个窗体(SubForm),而不关闭第一窗体(MainForm),然后再次单击第一窗体(MainForm)中的按钮以打开第二个窗体(SubForm)。 - 现在,我在第二个窗体(SubForm)中单击用户控件,打开了第三个窗体(ChildForm)。 - 现在,当我单击第三个窗体(ChildForm)中的"确定"按钮时,第二个窗体(SubForm)中的事件再次触发,并且第三个窗体(ChildForm)被打开了四次。 - 现在,当我再次关闭第二个窗体(SubForm),然后单击用户控件并选择第三个窗体(ChildForm)时,第三个窗体(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();
}
有人知道为什么会出现这种情况吗?
MouseUp
事件的赋值发生在哪里? - DonBoitnottUserControl1.MouseUp += new EventHandler(this.Node_Click);
?如果你多次订阅,事件将会被触发相应的次数。 - Sriram Sakthivel