好的,我在C#编程约1周...
我正在编写一个有两种形式的GUI应用程序。
Form1
是主要形式,并且有相当多的代码可以很好地工作。
当Form1处理异常时,Form2
应该被启动。
Form1
和Form2
都是在VS Solution Explorer中创建的,因此它们不是动态创建的代码。
在Form1.cs中......
namespace Launcher
{
public partial class Form1: Form
{
// ...
private void button2_Click(object sender, EventArgs e)
{
try
{
//some codes
}
catch (SomeException)
{
Form Form2 = new Form();
Form2.Show();
}
}
}
}
另外..在Program.cs ..
using System.Windows.Forms;
namespace LauncherCSharp
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
问题是.. Form2.Show()
会弹出一个全新的Form2
,而不是我在解决方案资源管理器中定义的那个。我认为这与上面的新Form()
行有关,但如果我没有这个新的Form()
行,编译器会抱怨Form2.Show()
..无法访问非静态方法“显示“在静态环境中。
有什么想法吗?
答案 0 :(得分:1)
您实际上并未创建Form2
您的代码
Form Form2 = new Form();
应该是
Form2 form2 = new Form2();
或将Form2替换为form2的实际名称。
在C#中,我们通过以下语法创建对象的实例(在您的情况下,对象是表单)
ObjectName yourVariableName = new ObjectName();
然后我们可以使用&#34; yourVariableName&#34;来引用这个对象。 例如
yourVariableName.Show(); // Show the form