由于我没有太多的声誉来发布图片,所以我将作为一个大问题进行阐述。
我有三个窗口窗体,每次创建窗体时事件的执行都会增加。
<强>1。 Form1(主窗体)
这里我调用包含用户控件的第二个窗体(子窗体)。
<强>2。 Form2(子窗体)
这里我通过点击用户控件来调用第二种形式(ChildForm)。
<强>3。 Form3(子窗体)
它包含一个确定按钮。
这是我的问题。
- 首先我打开 MainForm 并单击按钮打开第二个窗体(子窗体)。
- 现在在第二种形式 (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();
}
有人知道为什么会这样吗?
最佳答案
嘿,我不太确定发生了什么,但是如果您希望仅应用一次 node_click,只需声明一个 bool var canEnter=true; 然后这样做
private void Node_Click(object sender, EventArgs e) {
if(canEnter) {
ChildForm obj = new ChildForm();
obj.ShowDialog();
canEnter=false;
}
}
并为子窗体创建事件(关闭事件)并放入其中 可以输入=真; 如果我没猜错,我想这就是你需要做的:)
关于c# - 如何限制事件一次触发多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27484469/