表格在当前上下文中不存在

时间:2016-01-26 01:14:09

标签: c# winforms

我想要一个允许我创建表单新实例的按钮,或者如果我已创建它只是让它再次弹出。

     public void toolStripButton1_Click(object sender, EventArgs e)
     {
         if (!Form2Created)
         {
             Form2 Form_Prop = new Form2();
             Form_Prop.Show();
             Form2Created = true;
         }
         else
         {
             Form_Prop.WindowState = FormWindowState.Normal;
         }
     }

问题是Form_Prop“在上下文中不存在”(我肯定会知道它会因为我取消了关闭它的尝试而只是最小化它)

我该如何解决它?

3 个答案:

答案 0 :(得分:2)

您必须让Form_Prop成为您班级中的成员字段(即使您定义了toolStripButton1_Click。您也可以删除Form2Created字段:

 Form2 Form_Prop;

 public void toolStripButton1_Click(object sender, EventArgs e)
 {
     if (Form_Prop == null)
     {
         Form_Prop = new Form2();
         Form_Prop.Show();
     }
     else
     {
         Form_Prop.WindowState = FormWindowState.Normal;
     }
 }

答案 1 :(得分:1)

您需要阅读Scopes

现在回答你的问题。您在 if语句中声明表单的实例,这意味着它外面无法访问。因此,您应该将其声明为

Form2 Form_Prop;
public void toolStripButton1_Click(object sender, EventArgs e)
     {
         if (Form_Prop == null)
         {
             Form_Prop = new Form2();
             Form_Prop.Show();       

         }
     else
     {
         Form_Prop.WindowState = FormWindowState.Normal;
     }
 }

答案 2 :(得分:0)

Form2 Form_Prop;
public void toolStripButton1_Click(object sender, EventArgs e)
{
    Form_Prop = Form_Prop ?? new Form2();
    Form_Prop.Show();
    Form_Prop.WindowState = FormWindowState.Normal;
}