如何从C#Winform应用程序中的另一个FORM关闭一个FORM

时间:2014-10-09 10:11:52

标签: c# winforms forms

我正在使用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();
}

4 个答案:

答案 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;