在C#中启用和禁用表单

时间:2015-07-07 12:53:23

标签: c# .net winforms

我在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();

2 个答案:

答案 0 :(得分:4)

从{/ 1>}更改此行代码

form1

Login.Show();

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

Login.Show(this);

否则,当您尝试访问其成员时,该登录表单将不会拥有所有者,Login.Owner = this; Login.Show(); 将为空this.Owner

答案 1 :(得分:1)

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

<div id="canvas-holder" class='hide'>
                <span id='spend'>Month-To-Date Spend By Service</span>
                <canvas id="chart-area" style='width: 268px; height:259px;'/>

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