private void button1_Click(object sender, EventArgs e)
{
Form2.Show();
}
我有上面的代码,在我看来,它没有错误,但由于某种原因它不会执行。 它说错误“非静态字段,方法或属性需要一个对象引用”,但我错过了什么? 我只有两种形式(Form1和Form2)和一个按钮。我使用了注册表清理程序,但错误仍然存在。 它有另一个代码可以工作,但是这个代码将我的表单副本作为一个新变量,但我想像Visual Basic一样显示原始表单。
答案 0 :(得分:1)
Form2或Form1只是类的名称。在使用这些类之前,您需要创建它们的实例
Form2 secondaryForm = new Form2();
在此之后,您可以使用该类secondaryForm.Show();
因此,在使用/显示Form2之前,您需要创建一个实例。如果你想要节目
您的原始表格
,表示该实例已经创建。您需要检查创建该实例的代码,并在变量中引用该表单:
在Form1中创建一个变量:
private Form2 secondaryForm;
在您已创建原始Form2的代码中,只需使用此变量:
this.secondaryForm = new Form2();
在Form1的代码中的任何位置之后,您可以显示带有下一行的Form2:
this.secondaryFomr.Show();
答案 1 :(得分:1)
除了在类级别存储对表单的引用之外,还需要检查自上次使用表单以来它是否已关闭。在这种情况下,您需要创建一个新实例(就像您第一次使用时一样)。如果表单最小化,下面的示例还会恢复表单:
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();
}
}
}