使用ShowDialog之后,Owner子窗体的FormClosed事件不响应
如题,我的意思是下面这样Form1 form1 = new Form1();
Application.Run(form1);
Form1.class里
Form2 form2 = new Form2();
form2.ShowDialog();
Form2.Class里
Form3 form3 = new Form3();
form2.Owner = this;
当关闭Form2的时候,Form3的FormClosed事件不被响应。
如果
Form1.class里
Form2 form2 = new Form2();
form2.Show();
~~~~~~~~
的话,
关闭Form2的时候,Form3的FormClosed事件被响应。
有人知道是什么原因么?
--------------------编程问答-------------------- 具体是怎样写的 --------------------编程问答-------------------- 看看事件添加的位置是否正确,是不是在ShowDialog之后添加的 --------------------编程问答-------------------- Form2.Class里
Form3 form3 = new Form3();
form2.Owner = this;
2or 3? --------------------编程问答-------------------- ShowDialog 是阻塞的, Show 是非阻塞的
ShowDialog 时 后面的代码不会执行 直至 ShowDialog 有结果返回
而 Show 则会继续执行后面的代码 --------------------编程问答-------------------- 程序很简单,我就想把aaaaaa弹出来。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Owner = this;
f2.ShowDialog();
}
}
public partial class Form2 : Form
{
Form3 f3 = new Form3();
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
f3.Owner = this;
f3.ShowDialog();
}
}
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
private void Form3_FormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show("aaaaa");
}
} --------------------编程问答-------------------- 对不起,是下面这个,我就想在关闭form2的时候,把form3的aaaaaa弹出来。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Owner = this;
f2.ShowDialog();
}
}
public partial class Form2 : Form
{
Form3 f3 = new Form3();
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
f3.Owner = this;
}
}
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
private void Form3_FormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show("aaaaa");
}
} --------------------编程问答-------------------- 支持4楼见解! --------------------编程问答--------------------
你这个代码 form3都没有显示,怎么会触发关闭的事件
虽然反射可以实现,但你还是先想清楚要做什么 --------------------编程问答-------------------- ++++ --------------------编程问答-------------------- 如果
Form1.class里
Form2 form2 = new Form2();
form2.Show();
~~~~~~~~
的话,
关闭Form2的时候,Form3的FormClosed事件被响应。
而form2.ShowDialog();
关闭Form2的时候,Form3的FormClosed事件不被响应。 --------------------编程问答--------------------
--------------------编程问答-------------------- 应该用FormClosing事件 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 再顶顶,没有人仔细看么。
放在Closing事件中比较好点。
private void Form3_FormClosing(object sender, FormClosingEventArgs e)
{
MessageBox.Show("aaaaa");
}
}
补充:.NET技术 , C#