日期:2014-05-18  浏览次数:20782 次

关于在窗口中切换其它窗口的问题不触发FromClosing事件的问题
本人新手,正在学习C#,遇到一些问题,想不通,希望有人指点一二。
有Form1和Form2两个窗口,Form1中有一个panel1和一个按钮btn1
private void btn1_Click(object sender, EventArgs e)
  {
  this.panel1.Controls.Clear();
  Form2 f2= new Form2();
  f2.TopLevel = false;
  f2.Parent = this.panel1;
  f2.Show();
  }
现在点击Form1中的btn1可以在panel1中显示Form2,但是如果再点击一下,我认为应该是先将前一个定义的Form2窗口关闭掉,再重新生成一个Form2对象,但是我在Form2中定义FromClosing事件,就是触发不了,就是说原先的Form2没有被关闭,那它又到哪里去了呢?纠结中~

------解决方案--------------------
加上关闭的代码
C# code
foreach (Control item in this.panel1.Controls)
{
    Form2 f;
    if ((f = item as Form2) != null)
    {
        f.Close();
    }
    item.Dispose();
}
this.panel1.Controls.Clear();
Form2 f2 = new Form2();
f2.TopLevel = false;
f2.Parent = this.panel1;
f2.Show();

------解决方案--------------------
你得执行Close,否则不会触发Closeing事件的