【发布时间】:2014-12-15 12:47:13
【问题描述】:
由于我在发布图片方面没有太多声誉,因此我将其作为一个大问题进行详细说明。
我有三个窗口窗体,其中每次创建窗体时事件的执行都会增加。
1. Form1(主窗体)
这里我称之为包含用户控件的第二个表单(SubForm)。
2。 Form2(子表单)
这里我通过点击用户控件调用第二个表单(ChildForm)。
3. Form3(子窗体)
它包含一个确定按钮。
这是我的问题。
- 首先我打开 MainForm 并单击按钮打开第二个表单(SubForm)。
- 现在在第二个表单(子表单)中,我单击显示第三个表单(子表单)的用户控件。
- 当我在第三个表单中单击“确定”按钮时,该表单将关闭。
- 现在我关闭第二个表单(子表单)而不关闭第一个表单(主表单),然后单击第一个表单(主表单)中的按钮再次打开第二个表单(子表单)。
- 现在我点击第二个表单(SubForm)中的用户控件,打开第三个表单(ChildForm)。
- 现在,当我在第三个表单(ChildForm) 中单击“确定”时,第二个表单(SubForm) 中的事件再次被触发,第三个表单(ChildForm) 被打开四次。
- 现在,当我再次关闭第二个表单(子表单)并单击用户控件并获取第三个表单(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事件分配发生在哪里? -
你在哪里订阅
UserControl1.MouseUp += new EventHandler(this.Node_Click);?如果您多次订阅,事件将被触发多次。