C# 打开子窗体(from2),如何关闭父窗体(from1)解决方案之一
2009-08-25 13:23
453 查看
首先要说明,整个程序是建立在单线程之上的,也就是说建立窗体是从父窗体建立的,
可以使用:
frmMain form=new frmMain ();
form.Show();
来家里任意多个窗体,这些窗体都是在form1存在的前提下存在的.这些新建的窗体和父窗体所有的属性是完全一样的。
我们想要关闭当前的子窗体就要改变某些属性,让其与父窗体有所区别。
接下来我们为了区分子窗体和父窗体改变子窗体的某些属性,这里改变的是子窗体的名字
FormCollection fmc = System.Windows.Forms.Application.OpenForms;//收集当前打开的所有窗口
i = System.Windows.Forms.Application.OpenForms.Count-1;//大昂前打开的所有窗口的数目,减去一就是新建窗体的数目
fmc[i].Name = "Form" + i.ToString();//改变新建窗体的名字,直接变成form1,form2依次递增。
这些代码都是在新建窗体的函数里面的。
那么接下来就是怎么关闭窗体的问题了,有了区别的标志想要关闭就很容易了。关闭函数为;
private void 关闭ToolStripMenuItem1_Click(object sender, EventArgs e)
{
Form currentform;
form.Activate();//激活鼠标指向的窗体并给于焦点
currentform = System.Windows.Forms.Form.ActiveForm;//获得当前鼠标操作的窗体
FormCollection fmc = System.Windows.Forms.Application.OpenForms;//收集打开的所有窗体
string name;
name = currentform.Name;//获得当前鼠标操作的窗体的名称属性值
if (name != frmMain.form.Name)//判断是否和主窗体的名称相同如果不同则关闭当前窗体
{
this.Close();
}
else
fmc[0].Hide();//否则吧主窗体隐藏掉,因为这是单线程的程序,关掉主窗体程序退出。
}
PS:目前在完善这个方案在不建立多线程的情况下,想在关掉最后一个子窗体的时候能够推出整个的程序,而不是程序移植隐藏着,在后台运行。要是某位大大有好方法希望可以赐教。
可以使用:
frmMain form=new frmMain ();
form.Show();
来家里任意多个窗体,这些窗体都是在form1存在的前提下存在的.这些新建的窗体和父窗体所有的属性是完全一样的。
我们想要关闭当前的子窗体就要改变某些属性,让其与父窗体有所区别。
接下来我们为了区分子窗体和父窗体改变子窗体的某些属性,这里改变的是子窗体的名字
FormCollection fmc = System.Windows.Forms.Application.OpenForms;//收集当前打开的所有窗口
i = System.Windows.Forms.Application.OpenForms.Count-1;//大昂前打开的所有窗口的数目,减去一就是新建窗体的数目
fmc[i].Name = "Form" + i.ToString();//改变新建窗体的名字,直接变成form1,form2依次递增。
这些代码都是在新建窗体的函数里面的。
那么接下来就是怎么关闭窗体的问题了,有了区别的标志想要关闭就很容易了。关闭函数为;
private void 关闭ToolStripMenuItem1_Click(object sender, EventArgs e)
{
Form currentform;
form.Activate();//激活鼠标指向的窗体并给于焦点
currentform = System.Windows.Forms.Form.ActiveForm;//获得当前鼠标操作的窗体
FormCollection fmc = System.Windows.Forms.Application.OpenForms;//收集打开的所有窗体
string name;
name = currentform.Name;//获得当前鼠标操作的窗体的名称属性值
if (name != frmMain.form.Name)//判断是否和主窗体的名称相同如果不同则关闭当前窗体
{
this.Close();
}
else
fmc[0].Hide();//否则吧主窗体隐藏掉,因为这是单线程的程序,关掉主窗体程序退出。
}
PS:目前在完善这个方案在不建立多线程的情况下,想在关掉最后一个子窗体的时候能够推出整个的程序,而不是程序移植隐藏着,在后台运行。要是某位大大有好方法希望可以赐教。
相关文章推荐
- C# 打开子窗体(from2),如何关闭父窗体(from1)
- (转) c#中如何设计一个窗体关闭,另一个窗体打开?
- (转) c#中如何设计一个窗体关闭,另一个窗体打开?
- (转) c#中如何设计一个窗体关闭,另一个窗体打开?
- WinForm------如何打开子窗体的同时关闭父窗体
- 如何关闭父窗体?C#
- c#打开新窗体后关闭旧窗体
- DockPanel 子窗体如何在父窗体打开另一子窗体,以选项卡式存在
- C# 关闭当前窗体打开另一窗体?
- 在.net(C# or vb.net)中如何取消一个窗体的关闭
- 在子窗体中点击超级链接,关闭子窗体并刷新打开它的父窗体
- C#主窗体控件打开一个子窗体,子窗体关闭后,再重新打开子窗体出现:无法访问已经释放的对象
- C#在后台注册一个脚本,打开一个子窗口,显示在屏幕中间,关闭子窗体刷新子窗体代码
- 取消窗体的关闭[C# WinFrom]
- vs2008(C#) IDE 使用之 菜单栏/文件/打开,关闭,关闭解决方案...
- 【转】C# 子窗体如何调用父窗体的方法
- C# 实现MDI子窗体只打开一个(打开新的窗口,关闭其他窗口)
- C#如何关闭一个窗口的同时打开另一个窗口
- c#实现关闭当前窗体并打开另一个已经创建的窗体
- 使用C#打开新窗口关闭旧窗口的方法;winform中防止重复打开多个相同子窗体