在C#中启用和禁用表单

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

这是form1代码:

 Login Login = new Login(); Login.Show(); this.Enabled = false; 

form2(登录)代码:

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

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

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

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

form1更改此行代码

 Login.Show(); 

 Login.Show(this); 

或者在显示之前明确设置所有者:

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

否则,当您尝试访问其成员时,该登录表单将不具有所有者,并且this.Owner将为null,从而导致NullReferenceException