c#中启用和禁用表单

本文关键字:表单 启用 | 更新日期: 2023-09-27 18:01:19

我在c#中创建了两个表单:form1是主应用程序,form2是登录窗口。Form1有一个按钮可以禁用自己并显示form2, form2有一个按钮可以启用主表单并关闭自己。问题是当我尝试使用form2按钮启用form1时(我得到"Application.exe中发生了未处理的'System.NullReferenceException'类型异常")

下面是form1代码:
Login  Login = new Login();
Login.Show();
this.Enabled = false;

form2(登录)代码:

(this.Owner as Form1).Enabled = true;  ===> this line gets highlighted
 Close();

c#中启用和禁用表单

form1中的这行代码从

更改
Login.Show();

Login.Show(this);

或在显示前显式设置owner:

Login.Owner = this;
Login.Show();

否则,登录表单将没有所有者和this.Owner将是空的,导致NullReferenceException当你试图访问其成员。

您可以使用ShowDialog,这将使在显示表单期间(同一应用程序的)所有其他表单无法访问:

using (var login = new Login()) {
    login.ShowDialog(this);
}

您可以传递一个DialogResult值作为返回码,将成功或失败传递给调用方法。