分享

vs.net在c#中关闭第一个登录Form窗口打开另一个新窗口方法 飞狐itweb

 lvyafei 2011-09-24

很多同学问怎么关闭一个FORM打开另一个新Form。这个问题最多的是在做登录验证时,使用第一个登录窗 登录成功后要关闭自己,然后打开新窗显示。没想到这个问题在.Net还成了问题,不过依然有很多方法解决。
典型的
Form1 f = new Form1();
f.Show();
this.Close();
最后的关闭时把整个程序都关闭了

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

//新建一个NewForm窗口(NewForm是自己定义的Form)
NewForm fm=new NewForm()

this.Hide();//隐藏现在这个窗口
fm.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 。
登录窗口完成任务后会被直接关掉,主窗口就打开了

网上大多都是前面2种方法,另外还看到一个方法用线程的方法方法,未验证
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();
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多