在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
。