我正在使用C#winform应用程序,因为我想从另一个表单关闭一个表单,即我有2个表单Form1和Form2,我想从Form1关闭Form2,因为我已经编写了以下代码按钮单击Form1的事件,但我得到以下异常 -
"对象引用未设置为对象的实例。"
private void button_click(object sender, eventArgs e)
{
Form2.ActiveForm.Disposed+= new EventHandler(closeForm2) // Getting Exception to ***closeForm2***
}
private void closeForm2(object sender, eventArgs e)
{
Form2.ActiveForm.Dispose();
}
答案 0 :(得分:0)
ActiveForm返回“此应用程序当前活动的表单”=您单击的表单... 你如何开始你的Form2? 我认为你应该像
那样定义它Form2 DetailsForm = null;
public void prepareForm2() //bind this to action to open new form
{
if (DetailsForm == null)
{
DetailsForm = new Form2(this);
}
}
比你可以调用close()/ Dispose / Hide 通过调用
private void closeForm2(object sender, eventArgs e)
{
DetailsForm.Close();
// or DetailsForm.Hide();
// or DetailsForm.Dispose();
}
答案 1 :(得分:0)
请参阅MSDN - > Form.ActiveForm属性
如果您的应用程序是多文档界面(MDI)应用程序,请使用 ActiveMdiChild属性获取当前活动的MDI子窗体。
我认为您的MDI表格中需要一个空白,如
public void closeChild(Type FormType)
{
foreach(Form form in this.MdiChildren)
{
if(typeof(form) == FormType)
{
/* what ever you wanna do */
}
}
}
希望我能提供帮助:)
答案 2 :(得分:0)
对于未来的读者!
您可以使用以下代码从C#Winform Application中的另一个FORM中关闭一个FORM。
FrmToBeClosed obj = (FrmToBeClosed)Application.OpenForms["FrmToBeClosed"];
obj.Close();
这两行代码是不言自明的!
那就是它!
答案 3 :(得分:0)
CloseProgramForm closepf = new CloseProgramForm();
closepf.ShowDialog();
if (closeoption == 1)
e.Cancel = false;
else
e.Cancel = true;