无法打开第二个表格

时间:2019-11-08 14:23:30

标签: c# .net winforms

我正在尝试使用以下代码打开第二个表单。它应该正在工作。但是我的项目发生了什么事。

Form2 newForm = new Form2();
newForm.Show();

使用上述代码显示错误as image shows. 我添加了第二个表单(Form2)。应该是什么问题?

错误:The type or namespace name 'Form2' could not be found (are you missing a using directive or an assembly reference?)

3 个答案:

答案 0 :(得分:2)

您需要确保两者都在同一个命名空间中,或者在using中添加Form1.cs语句。

所以您可能会有类似的内容:

namespace TestFormsApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Form2 newForm = new Form2();
            newForm.Show();
        }
    }
}  

namespace TestFormsApp_Different
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
    }
}  

要么将两者的命名空间更改为相同,要么像这样向using添加Form1.cs

using TestFormsApp_Different

namespace TestFormsApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Form2 newForm = new Form2();
            newForm.Show();
        }
    }
}

您必须确定哪种方法更适合您。两者在不同情况下都有意义,但这是另一个主题。

答案 1 :(得分:0)

Form2与Form1在不同的命名空间中。您需要使用using指令。

伪代码

// 1.st file, where the Form1 is declared:

// Place the using directive
using A2;

namespace A1
{
  public partial class Form1 : Form
  {
    public void ShowForm2()
    {
      Form2 newForm = new Form2();
      newForm.Show();

      // It works without the using directive aswell, while using following:
      A2.Form2 newForm = new A2.Form2();
      newForm.Show();
    }
  }
}

// 2.nd file, where the Form2 is declared:
namespace A2
{
  public partial class Form2 : Form
  {
    // Anything..
  }
}

答案 2 :(得分:-3)

如果有form1,您可以尝试打开form2。

双击form1和onload事件Load(object sender,...)

 private void Form1_Load(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.Show();
}