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

关于2个窗体的互操作
有2个窗体HrManageForm和FatherForm
在FatherForm上添加一个Button,实现在FatherForm上点击button后显示HrHanagerForm并且隐藏FatherForm
  在HrHanagerForm上点击"X"关闭本窗体后显示FatherForm窗体

现在我是这么做的:
  在FatherForm上
 
C# code

    //人力资源管理系统button
     private void button2_Click(object sender, EventArgs e)
     {
         HrManageForm myHrForm = new HrManageForm();
         myHrForm.Show();
         this.Visible = false;
     }           
    


  在HrHanagerForm上
 
C# code

    //关闭人力资源管理窗口之后显示企业管理窗口
    private void HrManageForm_FormClosed(object sender, FormClosedEventArgs e)
    {
         FatherForm fatherform = new FatherForm();
         fatherform.Show();
    }



  问题是:
程序运行后,先点击Button,显示HrManageForm窗体,然后关闭HrManageForm窗体会自动显示FatherForm窗体,
再关闭FatherForm窗体,这时没有窗体存在了,但是程序却还在继续运行,停止调试才能关闭程序...


  请问这是怎么回事,有什么解决的办法,请大虾详细说说,谢谢!




------解决方案--------------------
this.Visible = false;
这只是 不可见,不是关闭。
------解决方案--------------------
事实上,你应该找到之前的FatherForm实例。如果每次都在formclosing事件里面new一个新的FatherForm的话,第一次的那个FatherForm一直存在,只是被隐藏起来了。尝试下面方法
C# code

        public Form1()
        {
            InitializeComponent();
            f1 = this;
        }
        public static Form1 f1;
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.Show();
            this.Visible = false;
        }

------解决方案--------------------
private void button2_Click(object sender, EventArgs e)
{
this.Visible = false;
HrManageForm myHrForm = new HrManageForm();
myHrFormthis.ShowDialog();
this.Visible = true;
}



在HrHanagerForm上
  
C# code
//关闭人力资源管理窗口之后显示企业管理窗口
private void HrManageForm_FormClosed(object sender, FormClosedEventArgs e)
{
}




------解决方案--------------------
http://blog.csdn.net/wuyazhe/article/details/5642431