当我在c#中按下Form1按钮时,我如何从Form1中显示原始的Form2


private void button1_Click(object sender, EventArgs e)
    {
        Form2.Show();
    }

我有上面的代码,在我看来没有错误,但由于某种原因它不会执行。它说错误"非静态字段,方法或属性需要对象引用",但我错过了什么?我只有两个表单(Form1和Form2)和一个按钮。我使用了注册表清理程序,但错误仍然存在。存在另一个代码,它的工作,但这段代码使我的形式作为一个新的变量的副本,但我想显示原始的形式,就像它Visual Basic做的。

除了在类级别存储对表单的引用之外,还需要检查自上次使用它以来它是否已关闭。在这种情况下,您需要创建一个新实例(就像您第一次使用时所做的那样)。下面的例子也恢复了最小化的表单:

public partial class Form1 : Form
{
    Form2 F2 = null;
    public Form1()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        if (F2 == null || F2.IsDisposed)
        {
            F2 = new Form2();
            F2.Show();
        }
        else
        {
            if (F2.WindowState == FormWindowState.Minimized)
            {
                F2.WindowState = FormWindowState.Normal;
            }
            F2.Activate();
        }
    }
}

Form2或Form1只是类的名称。在使用这些类之前,您需要创建它们的一个实例

Form2 secondaryForm = new Form2();

在此之后,您可以使用该类secondaryForm.Show();的所有方法和属性

所以在使用/显示Form2之前,你需要创建一个实例。如果你想显示

您的原始格式

,表示实例已经创建。您需要检查创建实例的代码,并将对该表单的引用放在变量:

中。

在Form1中创建变量:

private Form2 secondaryForm;

在您已经创建了原始Form2的代码中,只需使用这个变量:

this.secondaryForm = new Form2();

之后,在Form1的代码的任何地方,你可以显示Form2的下一行:

this.secondaryFomr.Show();

最新更新