簡體   English   中英

如何在C#Winform應用程序中從另一個FORM關閉一個FORM

[英]How to close one FORM from another FORM in C# Winform Application

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

對於未來的讀者!

您可以在C#Winform應用程序中使用以下代碼從另一個FORM關閉一個FORM。

FrmToBeClosed obj = (FrmToBeClosed)Application.OpenForms["FrmToBeClosed"];
obj.Close();

這兩行代碼是不言自明的!

而已!

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();
}

參見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 */
    }
  }
}

希望我能幫助:)

 CloseProgramForm closepf = new CloseProgramForm();
            closepf.ShowDialog();
            if (closeoption == 1)
                e.Cancel = false;
            else
                e.Cancel = true;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM