1. 首页
  2. 学习笔记

【笔记】C#中关闭第一个Form窗口,打开另一个新窗口方法

在C#开发中,可能会遇到,要关闭当前Form,并且打开一个新的Form。但是我们发现并没有想象的那么随意,如果关闭了当前的Form,新的Form也会随之关闭,因为都是同一个线程的。

例如:

Form1 tmp = new Form1();
tmp.Show();
this.Close();
//然后新窗口也一起给关闭了

1.隐藏法,原理就是把旧窗口隐藏掉,再打开新窗口。

//新建一个NewForm窗口(NewForm是自己定义的Form)
NewForm tmp=new NewForm()
this.Hide();//隐藏现在这个窗口
tmp.Show();//新窗口显现

 

这种方法旧的窗口依旧会占内存,因此如果用来做登陆窗口不太好,但是如果旧窗口是以后还需要恢复的主窗口,这个方法便很不错,因为以后可以关掉新窗口,再用旧窗口.Show() 就可以恢复旧窗口了。
所以这个方法适合在主窗口和子窗口间传递信息。

2.再来便是为登录窗口设计的方法了。
在Program.cs里这样定义:

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    //新建Login窗口(Login是自己定义的Form)
    Login Log = new Login();

    //使用模式对话框方法显示Log
    Log.ShowDialog();

    //DialogResult就是用来判断是否返回父窗体的
    if (Log.DialogResult == DialogResult.OK)
    {
        //在线程中打开主窗体
        Application.Run(new Main());
    }
}

在登陆窗口中验证结束后要赋值Log.DialogResult = DialogResult.OK 。
登录窗口完成任务后会被直接关掉,主窗口就打开了
3.开新线程

推荐使用这种方法!!

public static void ThreadProc()
{
    Application.Run(new Form());
}

private void button1_Click(object sender, EventArgs e)
{
    System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ThreadProc));
    t.Start();
}

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}
//创建一个新的线程 来运行窗口
评分 0, 满分 5 星
0
0
看完收藏一下,下次也能找得到
  • 版权声明:本文基于《知识共享署名-相同方式共享 3.0 中国大陆许可协议》发布,转载请遵循本协议
  • 文章链接:http://www.carlstedt.cn/archives/933 (转载时请注明本文出处及文章链接)
  • 本文无相关文章
上一篇:
:下一篇

发表评论

gravatar

快来吐槽一下吧!

  1. .01 4:06
  2. .02 1:47
  3. .03 3:39
  4. .04 1:40