4

所以,我在这里有点挣扎。我正在用 C# 编写一个 Windows 控制台应用程序,并且刚刚为名为 frmLogin 的应用程序制作了一个登录表单。我尝试使用 MS 记录的方法;

Form f = new Form();
f.ShowDialog();

但这显然会加载/显示一个空白表单,而不是我在表单设计器中定义的表单。

在我的主应用程序中,我希望能够以编程方式显示登录表单,但是当我尝试使用时;

frmLogin.ShowDialog();

它告诉我“非静态字段、方法或属性‘System.Windows.Forms.Form.ShowDialog()’需要对象引用

在过去,我可以通过简单地使用上面的代码片段来显示一个表单。因此,自从我上次编写 Windows 控制台应用程序以来,显然发生了一些变化。

有人可以告诉我我的方式的错误吗?

4

4 回答 4

10

这将创建一个类型的新实例Form

Form f = new Form();

当然,这是一个空白表格。您的类型似乎被称为frmLogin. 通常这听起来像一个变量名而不是类名,但你在这里得到的错误告诉我它是一个类:

frmLogin.ShowDialog();

鉴于此,解决问题的最快方法是创建表单实例并显示它:

frmLogin login = new frmLogin();
login.ShowDialog();

但是,为了符合命名标准和约定(以帮助防止将来出现混淆和问题),我强烈建议将表单本身重命名为:

LoginForm

然后你可以使用类似frmLogin变量名的东西,这是一种更常见的方法:

LoginForm frmLogin = new LoginForm();
frmLogin.ShowDialog();
于 2013-11-12T20:35:38.997 回答
3

问题在于,使用您从 Microsoft 获取的代码片段,您只是在构建基本类型。你需要建立你的表格。因此new Form,您可以构建一个new frmLogin

var f = new frmLogin();
f.ShowDialog();
于 2013-11-12T20:35:43.573 回答
2

如果这不能解决您的问题,我将删除我的答案,但是,我假设您没有实例化您的表单:

Form2 frmLogin = new Form2();
frmLogin.ShowDialog();

这对我来说很好。虽然就个人而言,我会简单地使用该.Show()方法:

Form2 frmLogin = new Form2();
frmLogin.Show();
于 2013-11-12T20:36:27.673 回答
1

创建您尝试打开的 FORM 对象,例如“frmStudent”

方法一:

frmStudent obj = new frmStudent();
obj.Show();

方法二:

它将打开表单,但在关闭它之前您不能移动到另一个表单。

frmStudent obj = new frmStudent();
obj.ShowDialog();
于 2016-02-23T14:42:10.250 回答