c# 两个窗体之间跳转

之前自己试了下,发现窗体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("关闭成功"); 
        }

新方法,待有空时再研究一下这个:https://blog.csdn.net/qq_17004327/article/details/45233565

你可能感兴趣的:(C#)