日期:2014-05-19  浏览次数:21077 次

菜鸟发问:如何实现在两个窗体之间的相互切换?
Windows应用程序
我设计了两个Form,程序运行时先运行Form1(默认设置)。然后点击Form1的button1,Form1关闭,Form2出现;再点击Form2的button2,Form2关闭,Form1出现……就这样反复循环,请问该怎么实现呢?
private   void   button1_Click(object   sender,   System.EventArgs   e)
{
}
private   void   button2_Click(object   sender,   System.EventArgs   e)
{
}
谢咯~~~~~~~~

------解决方案--------------------
如果不Hide()的话,你你们知道当前有多少个窗体么?
new一下就出来一个,也就是点N下要事例出N个窗体,再加上最开始那个就N+1个了
------解决方案--------------------
是不是可以 用三个窗体
Form1 ,2 ,3
1和2还是上面的二个

3是主窗体 但不显

1和2都是3的成员 用3来捕获1和2的打开 关闭 隐藏 等事件

然后做出相应的处理
------解决方案--------------------
在调用窗体后不能通过简单的close()来真正关闭登陆窗体``原因是登陆窗口调用 窗体1的show()后``窗体1的show()事件一直存在``这个show()事件将一直存在于登陆窗体的进程中``
所以当企图通过关闭当前唯一显示的窗体来关闭整个应用程序时就会发现这个问题:程序依然存在进程``
------解决方案--------------------
private bool FindChildForm(string childForm)
{
Form[] form = this.MdiParent.MdiChildren;
foreach (Form cForm in form)
{
if (cForm.Name == childForm)
{
cForm.BringToFront();
return true;
}
}
return false;
}


private void button1_Click(object sender, System.EventArgs e)
{
this.Close() ;
if (this.FindChildForm( "Form2 ") == false)
{
Form2 f = new Form2();
f.MdiParent = this.MdiParent;
f.Show();
}
}

private void button2_Click(object sender, System.EventArgs e)
{
this.Close() ;
if ( this.FindChildForm( "Form1 ") == false)
{
Form1 f = new Form1();
f.MdiParent = this.MdiParent;
f.Show();
}
}