C# 无法打开第二个表单
我正试图用下面的代码打开第二个表单。它应该是有效的。但是我的项目出了点问题C# 无法打开第二个表单,c#,.net,winforms,C#,.net,Winforms,我正试图用下面的代码打开第二个表单。它应该是有效的。但是我的项目出了点问题 Form2 newForm = new Form2(); newForm.Show(); 使用上述代码会显示一个错误 我添加了第二个表格(表格2)。问题应该是什么 错误:找不到类型或命名空间名称“Form2”(是否缺少using指令或程序集引用?如果出现form1,可以尝试打开Form2 双击form1和onload事件加载(对象发送器,…) Form2与Form1位于不同的命名空间中。您需要使用using指令 伪码
Form2 newForm = new Form2();
newForm.Show();
使用上述代码会显示一个错误
我添加了第二个表格(表格2)。问题应该是什么
错误:
找不到类型或命名空间名称“Form2”(是否缺少using指令或程序集引用?
如果出现form1,可以尝试打开Form2
双击form1和onload事件加载(对象发送器,…)
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..
}
}
您需要确保两者位于同一名称空间中,或者使用
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();
}
}
}
及
将两者的名称空间更改为相同,或者使用将添加到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();
}
}
}
你必须决定哪种方法更适合你。两者在不同的情况下都有意义,但这是另一个主题。图像似乎表明了错误(红色曲线)。。错误是什么?您可以指向红色错误下划线以获取错误消息。我想你还没有用过Form2declare@Esmaeli-也许他们不想要模态形式Show()
非常有效。Form1
和Form2
的名称空间是什么?错误表明它们不同,并且在Form1.cs
中没有using
语句,只需右键单击代码中的Form2即可,选择“快速操作和重构”,并使用事件中运行的代码添加缺少的名称空间。事件中运行的代码正是不适用于OP的代码。唯一的区别是OP的事件称为Form1\u Load\u 1
,这是完全有效的,并且在处理自动生成事件时也可能发生,一个是双重生成的。这不能解决任何问题。是的,两种选择都有效。OP不需要向Form1添加using语句,但也不需要使它们具有相同的命名空间。有时,根据每件事情的最佳组织方式,只需执行其中一项或另一项就可以了。他们不需要添加using指令。这只是一种方法。这可能不适合他们的情况。在我的代码中,还演示了另一种(并非所有可能的)方法。无论如何,这个问题有几个正确的答案。
namespace TestFormsApp_Different
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
}
}
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();
}
}
}