黑马程序员技术交流社区

标题: winfrom中怎样实现不同窗体的切换! [打印本页]

作者: 梁琨    时间: 2011-11-26 04:40
标题: winfrom中怎样实现不同窗体的切换!
本帖最后由 梁琨 于 2011-11-28 19:06 编辑

例如:QQ登陆成功之后,切换到主窗体!
作者: 杨楠    时间: 2011-11-26 06:22
在form1里:
XXXXXXXXXXXXXX执行完代码;
this.dialogresult=dialogresult.ok;//关闭自己并且为dialogresult赋值

在主程序里:
if(form1.showdialogresult()==dialogresult.ok)
{form2.show();}
作者: 许前刚    时间: 2011-11-26 10:42
LoginForm:登录窗体名。MainForm:主窗体名。
在登录窗体中:
MainForm mainForm=new MainForm();
mainForm.Show();
this.Hide();
作者: 李荣壮    时间: 2011-11-26 11:41
许前刚 发表于 2011-11-26 10:42
LoginForm:登录窗体名。MainForm:主窗体名。
在登录窗体中:
MainForm mainForm=new MainForm();

这样不好吧, 你把登录窗体隐藏了, 而不是关闭, 它还是在后台运行, 占用资源不说
如果在任务管理器关闭了, 那程序也就退出了
作者: 许前刚    时间: 2011-11-26 15:50
李荣壮 发表于 2011-11-26 11:41
这样不好吧, 你把登录窗体隐藏了, 而不是关闭, 它还是在后台运行, 占用资源不说
如果在任务管理器关闭了, ...

我说的这种是适合初学者的,LoginForm是启动窗体,如果不是隐藏而是关闭或退出,整个程序也就推出了,那样还怎么打开mainForm窗体?即使打开了,主窗体mainForm在loginForm退出或关闭的时候,mainform也会关闭!整个程序会退出!
作者: 刘景发    时间: 2011-11-26 15:56
要在不浪费资源的前提下可以尝试用模式窗体,可以试试这种方法:
主窗体中:
private void button1_Click(object sender, EventArgs e)
{
     MainForm  mainfrm = new MainForm();
     mainfrm.ShowDialog();
     this.Visible=false;
    if (mainfrm.DialogResult == DialogResult.OK)
    {
        this.Visible = true;
    }
}
其他窗体要返回的话,在要返回的窗体中的按钮事件中写如下代码:
private void button1_Click(object sender, EventArgs e)
{
      this.DialogResult = DialogResult.OK;
      this.Close();
      this.Dispose();
}
这样不会增加资源的耗费,而且还可以实现不同窗体之间的来回切换。
作者: 张彪    时间: 2011-11-28 14:53
用mian函数试试看,后面可以跟上窗体的名字




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2