Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 关闭窗口窗体_Visual Studio 2008_C# 3.0 - Fatal编程技术网

Visual studio 2008 关闭窗口窗体

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

我正在使用c#开发windows应用程序。我想在单击按钮后关闭应用程序并显示新表单,我这样做了,但每次我单击按钮时,它都会显示另一个窗口,当我转到任务管理器时,该表单仍在运行。我想避免那样。我使用这个.close()函数退出表单。

假设您有
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
毫秒。我确实需要在两个表单之间切换。它工作得很好,但唯一的问题是每次我在两个窗体之间切换时,它都在创建新的窗体实例,我需要做的是避免这种情况发生。当我在表单之间移动时,只应该有两个表单,而不是有更多的实例。我希望你能理解我的想法。