繁体   English   中英

当我按下C#中的Form1上的按钮时,如何从Form1内部显示原始Form2

[英]how would I show the original Form2 from inside Form1 when I press button on Form1 in C#

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

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

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

Form2 secondaryForm = new Form2();

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

因此,在使用/显示Form2之前,您需要创建一个实例。 如果你想要表演

你的原始表格

,meens那个实例已经创建了。 您需要检查创建该实例的代码,并在变量中引用该表单:

在Form1中创建一个变量:

private Form2 secondaryForm;

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

this.secondaryForm = new Form2();

在Form1的代码中的任何位置之后,您可以显示带有下一行的Form2:

this.secondaryFomr.Show();

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

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();
        }
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM