您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页C#中关闭第一个Form窗口,打开另一个新窗口方法

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

来源:爱go旅游网
C#中关闭第一个Form窗口,打开另一个新窗口方法

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

Form1 f = new Form1(); f.Show(); this.Close();

最后的关闭时把整个程序都关闭了

1隐藏法,原理就是把旧窗口隐藏掉,再打开新窗口。 //新建一个NewForm窗口(NewForm是自己定义的Form) NewFormfm=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(); }

C#编程时,经常会遇到处理两个或多个窗口的问题。以登录窗口为例,当登录窗口登录验证成功后,要进入主窗口,此时需要关闭登录窗口,这时候用this.close()是不可以的。因为Program.cs中

static void Main() {

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); }

Main 函数是程序的入口点,当你在Form1中调用this.close ()的时候,Application.Run(new Form1())中Form1就会结束,也就是说整个程序结束了,此时主窗口也会相应的关闭,这不是我们想看到的。下面有两种方法来只关闭登录窗口,而主窗口仍然运行。

4. 先隐藏登录窗口, 然后在主窗口关闭后将登录窗口关闭

这种方法只是把登录窗口隐藏了,主程序还在运行。实现方法为: 登录窗口代码:

if (user.CheckIn()) {

MainFormmyform = new MainForm(this); //调用带参的构造函数 myform.Show(); this.Hide(); } else {

MessageBox.Show(\"用户名或密码错误\"); }

登录成功后,通过构造函数传入登录窗口的参数到主窗口,这样在主窗口里可以直接对登录窗口操作

Form1 loginform = null; // 在主窗口添加带参的构造函数 public MainForm(Form1 myform) {

this.loginform = myform; InitializeComponent(); }

主窗口关闭后,关闭登录窗口

private void MainForm_FormClosed(object sender, FormClosedEventArgs e) {

loginform.Close(); }

5. 将主窗口程序设为主运行程序, 修改Program.cs

Application.Run(new MainForm());

这样系统启动时,运行的是主窗口程序。然后在主窗口加载时去调用登录窗口就可以了。

private void MainForm_Load(object sender, EventArgs e) {

Form1 form = new Form1(); form.ShowDialog(); this.Close(); }

登录窗口代码为: if (user.CheckIn()) {

this.Close(); } else {

MessageBox.Show(\"用户名或密码错误\"); }

C#在一个窗口中打开另一个窗口,同时关闭该窗口

C#编程时,经常会遇到处理两个或多个窗口的问题。以登录窗口为例,当登录窗口登录验证成功后,要进入主窗口,此时需要关闭登录窗口,这时候用this.close()是不可以的。因为Program.cs中 static void Main() {

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); }

Main 函数是程序的入口点,当你在Form1中调用this.close ()的时候,

Application.Run(new Form1())中Form1就会结束,也就是说整个程序结束了,此时主窗口也会相应的关闭,这不是我们想看到的。下面有两种方法来只关闭登录窗口,而主窗口仍然运行。

1. 先隐藏登录窗口,然后在主窗口关闭后将登录窗口关闭

这种方法只是把登录窗口隐藏了,主程序还在运行。实现方法为: 登录窗口代码: if (user.CheckIn()) {

MainFormmyform = new MainForm(this); //调用带参的构造函数 myform.Show(); this.Hide(); } else {

MessageBox.Show(\"用户名或密码错误\"); }

登录成功后,通过构造函数传入登录窗口的参数到主窗口,这样在主窗口里可以直接对登录窗口操作

Form1 loginform = null;

// 在主窗口添加带参的构造函数 public MainForm(Form1 myform) {

this.loginform = myform; InitializeComponent(); }

主窗口关闭后,关闭登录窗口

private void MainForm_FormClosed(object sender, FormClosedEventArgs e) {

loginform.Close(); }

2. 将主窗口程序设为主运行程序, 修改Program.cs

Application.Run(new MainForm()); 这样系统启动时,运行的是主窗口程序。然后在主窗口加载时去调用登录窗口就可以了。 private void MainForm_Load(object sender, EventArgs e) {

Form1 form = new Form1(); form.ShowDialog(); this.Close(); }

登录窗口代码为: if (user.CheckIn()) {

this.Close(); } else {

MessageBox.Show(\"用户名或密码错误\"); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务