c# - 关闭 C# Windows 窗体时出现问题

标签 c# winforms

我在关闭 C# Windows 窗体应用程序时遇到问题。它目前只会给我一个没有标题或任何东西的空白表格。 我需要找到一种方法来关闭这个未知的小窗口。

我有 2 个表单页面,一个用于登录屏幕,一个用于实际应用程序。全部由 program.cs 文件运行。

program.cs

...
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new PROG1());
}

这只是 visual studio 创建的用于运行我的程序的基本 main。

然后是主程序

PROG1.cs

...
public PROG1()
{
    Login LoginForm = new Login();
    DialogResult a = LoginForm.ShowDialog();

    if(LoginForm.ValidLogin == 1) {
        InitializeComponent();
    } else {
        Application.Exit(); //FAIL
    }
}

您可以看到,第一个 program.cs 文件调用 PROG1.cs,它调用 login.cs 的一个实例。如果您插入有效的登录名,登录页面将关闭,主 PROG1 将正常显示。但是,如果您只需单击红色 X 即可关闭登录表单,它会出现 Prog1 和 LoginForm.ValidLogin != 1,因此它不会初始化表单并将尝试关闭表单。这只会给我留下未初始化的表格,而不是将其关闭。如果我改为执行 this.close(),它将给我一个运行时错误。

有什么想法吗?

最佳答案

将 InitializeComponent 回调放回原来的顶部。尝试使用未初始化的变量(包括试图告诉它们自行关闭)是一个坏主意。

配置 PROG1 表单的属性,以便隐藏而不是显示初始状态。 LoginForm 返回后,您的 PROG1 代码可以决定是显示自己还是关闭自己。

关于c# - 关闭 C# Windows 窗体时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/695916/

相关文章:

c# - Net Core MVC API 路由 URL 编码 %20 导致空指针

c# - 使用 BouncyCaSTLe : AESEngine, AESFastEngine 或 AESLightEngine 进行 AES 加密?

javascript - 如何使日期选择器值 dd/mm/yyyy

c# - 循环遍历 Awesomium JSObject

c# - Windows 窗体 .net 框架中的移位控件

c# - 如何从 CheckedListBox 中获取选中项的值?

c# - 带有数字或特殊字符的密码复杂性正则表达式

c# - 是否可以测量 Winforms 表单出现需要多长时间?

winforms - 如何将行添加到 TableLayoutPanel 的中间

c# - 调整窗口大小时锚定控件不会调整大小(56k 小心)