winform窗口的切换

本文介绍了在Winform应用中如何实现窗口切换,建议使用多个Panel重叠,并通过改变Panel的可见性来切换界面。文章提到了三种方法:通过Hide()方法、Close()方法以及ApplicationContext方法,并详细阐述了每种方法的适用场景和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

假设要在form1 切换到到 from2 ;

建议用多panel重叠,在对不同事件响应的时候,分别设置相应panel的visible属性
panel简单易用,好东东啊

form 里面有Application.run(new form1()); //表示先运行 form1 那么form1就是主程序了

方法1

在主窗口上定义切换事件 例如

private void button1_Click(object sender, System.EventArgs e)
  
{  

Form2   logForm
=new
   Form2();   
  
   logForm.Show();               
//登陆窗口打开   

   this.Hide();  

}


 要是你用this.Hide();                   //主窗口隐藏   你把以后的窗体关闭后你的Form2作为主程序还在进程里的没有真正关闭的。

要关闭程序就只能用Application.exit();

方法2

在主窗口上定义切换事件 例如

 

 

private void button1_Click(object sender, System.EventArgs e)
  
{  

Form2   logForm
=new
   Form2();   
   logForm.fsdform   
=   this   ;//这个是关键   在form2中定义 internal Form   form这个是

   logForm.Show();               //登陆窗口打开   
   this.Hide();  

}

 

 

 

 

 

 因为你要是直接把this.Close();                   //主窗口退出那应用程序就直接退出了  
  要是你用this.Hide();                   //主窗口隐藏   你把以后的窗体关闭后你的Form2作为主程序还在进程里的没有真正关闭的。你要在其它界面调用你传递的“logForm.lform   =   this   ;//这个是关键”执行   form.Close   ()   关闭整个程序。  

 方法3

还是ApplicationContext方法比较合适。  
  建议大家都用   ApplicationContext   的方法来解决这样的问题,很方便,也很合适。  
   
   
  ---------------   1,首先建立主程序运行基类   -------------------------   
  

using   System;   
  
using
   System.Drawing;   
  
using
   System.Windows.Forms;   
  
using
   System.ComponentModel;   
  
using
   System.Text;   
  
using
   System.IO;   
    
  
namespace
   windowAppliction   
  
{   
  
///   <summary>   
  
///
   AppBase   的摘要说明。   
  
///   </summary>   

  public   class   AppContext   :ApplicationContext   
  
{   
    
  
private
   Welcome   fm1;   
  
private
   Login   fm2;   
  
private
   MainForm   fm3;   
    
  
//构造函数   

  public   AppContext()   
  
{   
  
//实例化Form窗体   

  fm1=new   Welcome();   
  fm2
=new
   Login();   
  fm3
=new
   MainForm();   
    
  
//订阅窗体关闭事件   

  fm1.Closed   +=   new   EventHandler(fm1_Closed);   
  fm1.Closing   
+=new
   CancelEventHandler(fm1_Closing);   
    
  fm2.Closed   
+=   new
   EventHandler(fm2_Closed);   
  fm2.Closing   
+=   new
   CancelEventHandler(fm2_Closing);   
    
  fm3.Closed   
+=   new
   EventHandler(fm3_Closed);   
  fm3.Closing   
+=   new
   CancelEventHandler(fm3_Closing);   
    
  fm1.Show();   
  fm2.Hide();   
  fm3.Hide();   
  }
   
    
  
**----   窗体关闭事件   ----**
   
    
  
**----   主程序入口点   ----**   
    
    
  }
   
  }
   

    
  -------------------------   2   建立三个窗体   ----------------------------------  
  WelcomeForm.cs   、LoginForm.cs、MainForm.cs  
   
  三个窗体执行完自己的操作以后,只要调用自己的   this.close();就可以了。  
  AppContext   主线程运行程序会监控到哪个窗体关闭了,然后该执行哪个步骤

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值