Visual studio 2008 关闭窗口窗体
我正在使用c#开发windows应用程序。我想在单击按钮后关闭应用程序并显示新表单,我这样做了,但每次我单击按钮时,它都会显示另一个窗口,当我转到任务管理器时,该表单仍在运行。我想避免那样。我使用这个.close()函数退出表单。假设您有Visual studio 2008 关闭窗口窗体,visual-studio-2008,c#-3.0,Visual Studio 2008,C# 3.0,我正在使用c#开发windows应用程序。我想在单击按钮后关闭应用程序并显示新表单,我这样做了,但每次我单击按钮时,它都会显示另一个窗口,当我转到任务管理器时,该表单仍在运行。我想避免那样。我使用这个.close()函数退出表单。假设您有Form1和Form2 Form1中的代码应该是这样的: public partial class Form1 : Form { private Form2 _form2; public Form1() { Initia
Form1
和Form2
Form1
中的代码应该是这样的:
public partial class Form1 : Form
{
private Form2 _form2;
public Form1()
{
InitializeComponent();
_form2 = new Form2();
_form2.VisibleChanged += new EventHandler(_form2_VisibleChanged);
}
void _form2_VisibleChanged(object sender, EventArgs e)
{
if (!_form2.Visible)
Show();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
this.Hide();
_form2.Show();
}
}
在Form2
中,您需要做的就是:
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
Hide();
}
当然,您必须在Form2
中订阅事件FormClosing
,但是如果您通过设计器(表单Properties
,单击Events
图标)执行此操作,只需将这两行粘贴到它创建的方法中即可)
这段代码在做什么?
在表格1中
:
- 创建
Form2的实例
- 在
方法中,我们只需隐藏表单,而不是在用户关闭表单时关闭表单,并显示Form1\u FormClosing
Form2
- 订阅
事件VisibleChanged
- 触发事件时,如果
的实例不可见,则会出现Form2
李>Form1
表格2中
:
- 上述步骤中的第二步,但没有显示任何内容
如果要在单击按钮时执行此操作,则只需执行相同的操作,但在按钮上的
事件上单击
事件,而不是表单关闭
事件。为什么要关闭整个应用程序?如果您试图完成的只是显示一个新表单,那么您可以隐藏或关闭第一个表单,然后显示第二个表单。如果您希望在隐藏和显示表单之间有一些延迟(可能您看到了转换,但您不希望看到),您可以始终使用System.Threading.Thread.Sleep(x)
等待x
毫秒。我确实需要在两个表单之间切换。它工作得很好,但唯一的问题是每次我在两个窗体之间切换时,它都在创建新的窗体实例,我需要做的是避免这种情况发生。当我在表单之间移动时,只应该有两个表单,而不是有更多的实例。我希望你能理解我的想法。