欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

c# 两个窗体之间跳转

程序员文章站 2022-06-10 10:56:56
...

之前自己试了下,发现窗体1跳转至窗体2时,有两种情况:

  1. 打开窗体2后,窗体1仍然存在。 在从窗体2打开窗体1,窗体2仍然存在,有两个窗体1。 出现这样的原因是因为打开另外一个窗体时没有关闭原来的窗体。
  2. 从窗体1打开至窗体2后, 关闭窗体1,但是发现关闭窗体1就会关闭整个程序,这是因为 Application.Run(new Form1());这句代码 ,意思是一旦关闭Form1 就会关闭整个程序。

首先 program.cs 中

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
 
    // 自动生成的代码是这样的
    // Application.Run(new Form1());
 
    // 表示 实例化一个新的 Form1 并显示之 此时程序进入消息循环
    // 一旦 Form1 被关闭则程序也随之关闭了
    // 为了让程序在 Form1 关闭后可以继续运行 需要修改下
 
    new Form1().Show();
    Application.Run();
 
    // 这样做就能避免 Form1 被关闭后程序自动退出了
 
    // 但这样做的风险是什么呢?
    // 一旦用户忘记了 Application.Exit();
    // 则程序在所有窗口关闭后 其进程仍然没有结束
    // 所以 Application.Exit(); 这行代码是需要手动添加的
}

Form1中设置一个按钮,点击跳转至Form2, 并关闭Form1。

 private void Form1_button_Click(object sender, EventArgs e)
        {      
            Form2 f= new Form2();
            f.Show();
            this.Close();  //关闭Form1
        }

Form2中设置一个按钮,点击跳转至Form1,并关闭Form2。 这里还有三种关闭程序的方法,为什么关闭这么麻烦呢?请看Program.cs中的注释

private void form2_button_Click(object sender, EventArgs e)
        {      
            Form1 form1 = new Form1();
            form1.Show();
            this.Close();  //关闭Form2
        }
		
		//关闭程序方法一:form2 的关闭按钮,点击次按钮,关闭所有程序
        private void form2_CloseButton_Click(object sender, EventArgs e)
        {
            Application.Exit();  //程序整体全部关闭
        }
        
		//关闭程序方法二:通过Closing事件来关闭程序。 还需要去属性中开启Closing事件
		private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (MessageBox.Show("确定要退出本系统吗?", "警告", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)

        {
            this.Dispose();
            Application.Exit();
        }
        else
        {
            e.Cancel = true;   //不关闭窗口   //关闭窗口 e.Cancel = false;
        }
    }
  	//关闭程序方法三:通过Closed事件来关闭程序,点关闭窗体后触发此事件,还需要设置form2中的属性,开启FormClosed。
	private void Form2_FormClosed(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
            // MessageBox.Show("关闭成功"); 
        }
相关标签: C#