我正在尝试使用以下代码打开第二个表单。它应该正在工作。但是我的项目发生了什么事。
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?)
答案 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();
}