【问题标题】:c# Show Windows Formc# 显示 Windows 窗体
【发布时间】:2013-11-12 20:31:11
【问题描述】:

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

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

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

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

frmLogin.ShowDialog();

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

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

谁能告诉我我的方式的错误?

【问题讨论】:

  • 您需要发布更多代码。你甚至在实例化你的 frmLogin 吗?
  • 你的 frmLogin 的类名是什么。在新语句中使用它而不是通用表单类。

标签: c# .net winforms


【解决方案1】:

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

Form f = new Form();

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

frmLogin.ShowDialog();

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

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

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

LoginForm

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

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

【讨论】:

  • 这正是我所需要的!谢谢!我已经离开 .NET 编程世界将近 10 年了。所以,在此期间有点生疏了。
  • 如果你想节省空间,试试new LogingForm().ShowDialog();
【解决方案2】:

问题在于,使用您从 Microsoft 获取的代码 sn-p,您只是在构建基本类型。你需要建立你的表格。所以不是new Form,而是建立一个new frmLogin

var f = new frmLogin();
f.ShowDialog();

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

      【解决方案4】:

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

      方法一:

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

      方法二:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-15
        • 2011-01-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多