弹出新窗口关闭旧窗口

时间:2022-05-06 23:42:47
Form1窗口上有一Button按钮,我想点击后,弹出Form2同时关闭Form1窗口,这个别在Button_Click事件里要怎么写,帮我解决下,谢谢

29 个解决方案

#1



window.open("Default.aspx");
window.opener=null;
window.close();

#2


引用 1 楼 mylibin 的回复:
JScript code
window.open("Default.aspx");
window.opener=null;
window.close();

#3


如果Form1 不是主窗体,则
Form2 frm = new Form2();
frm.show();
this.close();

否则可以在Main函数中使用ShowDialog显示第一个窗体,然后可以使用Run显示主窗体

#4


不行呀,我建立的是一个WINDOW窗体应用程序呀

我代码就简单的这样写,你们看一下要怎么实现

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


namespace 进入界面
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form Form2 = new Form();
            Form2.Show();
            


        }
    }
}


大家看看要怎么实现

#5


然后接下来的,我就不懂得要怎么写了~~

#6


引用 3 楼 netone04 的回复:
如果Form1 不是主窗体,则 
Form2 frm = new Form2(); 
frm.show(); 
this.close(); 

否则可以在Main函数中使用ShowDialog显示第一个窗体,然后可以使用Run显示主窗体



Form1是主窗体

#7


form1是主窗体就不用关闭了..

  隐藏就可以了..   form1.Hide();用这个就可以了...

   关闭窗口有几种方法的:   form.Hide();是隐藏,不会释放资源.

                       form.Close();form.Dispose();关闭并释放资源.

                         Application.Exit();退出应用程序..全部关闭..

#8


this.Hide()

#9


    顶  7  楼  

#10


引用 6 楼 yaodie_com 的回复:
引用 3 楼 netone04 的回复:
如果Form1 不是主窗体,则  
Form2 frm = new Form2();  
frm.show();  
this.close();  

否则可以在Main函数中使用ShowDialog显示第一个窗体,然后可以使用Run显示主窗体 
 


Form1是主窗体


要么form1不时主窗体,就是程序运行的时候的第一个界面,
要么就这么写,很无耻

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


namespace 进入界面
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form Form2 = new Form();
            Form2.Show();
             this.Hide();


        }
    }
}



#11


你可以这样做:
   this.Hide();
   Form2 frm = new Form2();  
   frm.show(); 
我认为:因为Form1是主线程,它创建了frm。用this.close(),会系统会把Form1中创建的资源全部释放。
不知对不对!!!!

#12


对了,我有个小小的问题呀,

我已经在解决方案中已经再添加了一个Form2
我现在就是有个疑问
Form2 frm=new Form2()

Form Form2=new Form()
有什么区别吗?

#13


引用 12 楼 yaodie_com 的回复:
对了,我有个小小的问题呀, 

我已经在解决方案中已经再添加了一个Form2 
我现在就是有个疑问 
Form2 frm=new Form2() 
跟 
Form Form2=new Form() 
有什么区别吗?


Form2 frm=new Form2() 这句话改为Form2 frm=new Form()


#14


有区别..

    Form2 frm=new Form2()  是调用你自己创立的那个窗体.


    而Form Form2=new Form() 会生成一个新的窗体...
    

#15


我现在代码是这样的

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


namespace 进入界面
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form Form2 = new Form2();
            Form2.Show();
            this.Hide();
           


        }
    }
}


用了你们的给的方法,是成功了,Form1就自动隐藏了,可是当我关闭了Form2了想回来调试,想再运行,发现不行了,是为什么?

提示信息如下

错误 1 无法将文件“obj\Debug\进入界面.exe”复制到“bin\Debug\进入界面.exe”。文件“bin\Debug\进入界面.exe”正由另一进程使用,因此该进程无法访问该文件。 进入界面

#16


重新用一个Show()方法把Form1显示出来就可以了.. 
 
       因为你只是隐藏.并没有关闭..~  

#17


嗯,在任务管理器里面还存在呀,对了,如果在弹出Form2的同时能不能把Form1关闭,即释放资源

#18


将窗体隐藏了就可以,如果确实要关闭。要写Closing事件吧!

#19


form2添加一个构造函数
public frmManageSysMain(frmDiskSelect frm)
        {
            
            if (frm.DialogResult == DialogResult.OK)
            {
                frm.Dispose();
                //frm.Close();
                InitializeComponent();
            }
            
        }

form1中的按钮事件
  
private void btnLogin_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.OK;
            frmManageSysMain frmMDIMian = new frmManageSysMain(this);
            frmMDIMian.ShowDialog();
            
        }

#20


public frmManageSysMain(frmDiskSelect frm)
        {
            
            if (frm.DialogResult == DialogResult.OK)
            {
                frm.Dispose();
                //frm.Close();
                InitializeComponent();
            }
            
        }

楼上的,这个是不是有错呀?

#21


this.close() ???
或者Response.Redirect();

#22


        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Application.ApplicationExit+=new EventHandler(Application_ApplicationExit);
            this.Close();
        }

        void Application_ApplicationExit(object sender, EventArgs e)
        {
            Application.Run(new Form2());
        }

#23


 this.Close();
 

#24


1、窗口1调窗口2:

Form Form2 = new Form2();
Form2.Show();
this.Hide();

2、窗口2关闭退出:

在form2的FormClosed事件中

private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
    Application.Exit();
}

#25


Hide、Visible、DialogResult都行,
只是别用Close

#26


该回复于2014-10-04 10:00:07被版主删除

#27


来凑个热闹

#28


window.open("Default.aspx");
window.opener=null;
window.close();

#29


对了如果我再添加一个Form3,我想在在点击button后Form2和Form3都显示,Form2为父窗体,Form3为子窗体,只有当关闭Form3后才可以控制Form2这个要怎



么实现?

有懂WINFORM帮我下,谢谢~~~

#1



window.open("Default.aspx");
window.opener=null;
window.close();

#2


引用 1 楼 mylibin 的回复:
JScript code
window.open("Default.aspx");
window.opener=null;
window.close();

#3


如果Form1 不是主窗体,则
Form2 frm = new Form2();
frm.show();
this.close();

否则可以在Main函数中使用ShowDialog显示第一个窗体,然后可以使用Run显示主窗体

#4


不行呀,我建立的是一个WINDOW窗体应用程序呀

我代码就简单的这样写,你们看一下要怎么实现

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


namespace 进入界面
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form Form2 = new Form();
            Form2.Show();
            


        }
    }
}


大家看看要怎么实现

#5


然后接下来的,我就不懂得要怎么写了~~

#6


引用 3 楼 netone04 的回复:
如果Form1 不是主窗体,则 
Form2 frm = new Form2(); 
frm.show(); 
this.close(); 

否则可以在Main函数中使用ShowDialog显示第一个窗体,然后可以使用Run显示主窗体



Form1是主窗体

#7


form1是主窗体就不用关闭了..

  隐藏就可以了..   form1.Hide();用这个就可以了...

   关闭窗口有几种方法的:   form.Hide();是隐藏,不会释放资源.

                       form.Close();form.Dispose();关闭并释放资源.

                         Application.Exit();退出应用程序..全部关闭..

#8


this.Hide()

#9


    顶  7  楼  

#10


引用 6 楼 yaodie_com 的回复:
引用 3 楼 netone04 的回复:
如果Form1 不是主窗体,则  
Form2 frm = new Form2();  
frm.show();  
this.close();  

否则可以在Main函数中使用ShowDialog显示第一个窗体,然后可以使用Run显示主窗体 
 


Form1是主窗体


要么form1不时主窗体,就是程序运行的时候的第一个界面,
要么就这么写,很无耻

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


namespace 进入界面
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form Form2 = new Form();
            Form2.Show();
             this.Hide();


        }
    }
}



#11


你可以这样做:
   this.Hide();
   Form2 frm = new Form2();  
   frm.show(); 
我认为:因为Form1是主线程,它创建了frm。用this.close(),会系统会把Form1中创建的资源全部释放。
不知对不对!!!!

#12


对了,我有个小小的问题呀,

我已经在解决方案中已经再添加了一个Form2
我现在就是有个疑问
Form2 frm=new Form2()

Form Form2=new Form()
有什么区别吗?

#13


引用 12 楼 yaodie_com 的回复:
对了,我有个小小的问题呀, 

我已经在解决方案中已经再添加了一个Form2 
我现在就是有个疑问 
Form2 frm=new Form2() 
跟 
Form Form2=new Form() 
有什么区别吗?


Form2 frm=new Form2() 这句话改为Form2 frm=new Form()


#14


有区别..

    Form2 frm=new Form2()  是调用你自己创立的那个窗体.


    而Form Form2=new Form() 会生成一个新的窗体...
    

#15


我现在代码是这样的

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


namespace 进入界面
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form Form2 = new Form2();
            Form2.Show();
            this.Hide();
           


        }
    }
}


用了你们的给的方法,是成功了,Form1就自动隐藏了,可是当我关闭了Form2了想回来调试,想再运行,发现不行了,是为什么?

提示信息如下

错误 1 无法将文件“obj\Debug\进入界面.exe”复制到“bin\Debug\进入界面.exe”。文件“bin\Debug\进入界面.exe”正由另一进程使用,因此该进程无法访问该文件。 进入界面

#16


重新用一个Show()方法把Form1显示出来就可以了.. 
 
       因为你只是隐藏.并没有关闭..~  

#17


嗯,在任务管理器里面还存在呀,对了,如果在弹出Form2的同时能不能把Form1关闭,即释放资源

#18


将窗体隐藏了就可以,如果确实要关闭。要写Closing事件吧!

#19


form2添加一个构造函数
public frmManageSysMain(frmDiskSelect frm)
        {
            
            if (frm.DialogResult == DialogResult.OK)
            {
                frm.Dispose();
                //frm.Close();
                InitializeComponent();
            }
            
        }

form1中的按钮事件
  
private void btnLogin_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.OK;
            frmManageSysMain frmMDIMian = new frmManageSysMain(this);
            frmMDIMian.ShowDialog();
            
        }

#20


public frmManageSysMain(frmDiskSelect frm)
        {
            
            if (frm.DialogResult == DialogResult.OK)
            {
                frm.Dispose();
                //frm.Close();
                InitializeComponent();
            }
            
        }

楼上的,这个是不是有错呀?

#21


this.close() ???
或者Response.Redirect();

#22


        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Application.ApplicationExit+=new EventHandler(Application_ApplicationExit);
            this.Close();
        }

        void Application_ApplicationExit(object sender, EventArgs e)
        {
            Application.Run(new Form2());
        }

#23


 this.Close();
 

#24


1、窗口1调窗口2:

Form Form2 = new Form2();
Form2.Show();
this.Hide();

2、窗口2关闭退出:

在form2的FormClosed事件中

private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
    Application.Exit();
}

#25


Hide、Visible、DialogResult都行,
只是别用Close

#26


该回复于2014-10-04 10:00:07被版主删除

#27


来凑个热闹

#28


window.open("Default.aspx");
window.opener=null;
window.close();

#29


对了如果我再添加一个Form3,我想在在点击button后Form2和Form3都显示,Form2为父窗体,Form3为子窗体,只有当关闭Form3后才可以控制Form2这个要怎



么实现?

有懂WINFORM帮我下,谢谢~~~