Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.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
C# 如何在不创建新实例(表单)的情况下在实例(表单)之间切换?_C#_Winforms_Instance - Fatal编程技术网

C# 如何在不创建新实例(表单)的情况下在实例(表单)之间切换?

C# 如何在不创建新实例(表单)的情况下在实例(表单)之间切换?,c#,winforms,instance,C#,Winforms,Instance,我知道如何切换表单,但我的问题是当从表单B切换到表单A时。它总是创建表单a的新实例 如何避免这种行为?您正在寻找的是所谓的 对于非常基本的方法,您可以采取以下措施: public partial class Form1 : Form { public static Form1 Instance { get; set; } //Create an Instance Object of your Window public Form1() { Initial

我知道如何切换表单,但我的问题是当从
表单B
切换到
表单A
时。它总是创建
表单a的新实例


如何避免这种行为?

您正在寻找的是所谓的

对于非常基本的方法,您可以采取以下措施:

public partial class Form1 : Form
{
    public static Form1 Instance { get; set; } //Create an Instance Object of your Window

    public Form1()
    {
        InitializeComponent();
    }

    //Your call to open the Window
    private void OpenForm2()
    {
        if (Form2.Instance == null)//Check if Form2 has already been created
        {
            //if not: go create a new one !
            Form2.Instance = new Form2();
        }
        //Instance of Form2 is already created => open that one            
        Form2.Instance.Show();            
    }
}

public partial class Form2 : Form
{
    public static Form2 Instance { get; set; }

    public Form2()
    {
        InitializeComponent();
    }
}

请提供一些代码。您必须保留对原始表单对象的引用。任何介绍性的C#书都应该解释这一点。您可以将您的主窗体设置为父窗体,将其他窗体设置为子窗体。切换时是否应关闭主窗体?