簡體   English   中英

關閉另一個窗體以C#

[英]Close another form to C#

我有2個Windows表單,1個登錄表單和1個主表單。 我想同時關閉主表單和登錄表單。 我能怎么做?

我嘗試了這個命令;

Form2 ac = new Form2();
ac.Show();
this.Close();

但這將關閉所有表格。 我只想關閉Form1

如果您關閉主窗體,當然所有窗口都會關閉,主窗體包含所有其他窗體,您的Q值不清楚,能否給我們一個清晰的代碼段,以顯示您要執行的操作?

如果您的Main方法包含:

  Application.Run(form1);

並且您正在關閉form1 ,您的應用程序將關閉。

您可以在顯示ac時“臨時”隱藏form1。 使用ShowDialog來阻止代碼,直到關閉ac窗體:

   using (Form2 ac = new Form2()) {
     this.Hide();
     if (ac.ShowDialog() == DialogResult.OK) {
       this.Show();
     } else {
      // Exit app
       this.Close();   
     }
   }

根據要調用哪個其他表單(以及如何調用)的表單,您必須以某種方式使請求從登錄表單中“冒泡”到主表單中。

假設表格1模態調用表格2:

public partial class Form1 : Form
{
    // ...

    private void callForm2()
    {
        var form2 = new Form2();
        if ( form2.ShowDialog( this )== DialogResult.Abort )
        {
            // Close myself if called form instructs me to close.
            Close();
        }
    }
}

如您所見,我使用DialogResult.Abort作為“通信信號”來關閉。 可以在Form2完成,如下所示:

public partial class Form2 : Form
{
    // ...

    private void buttonCloseAll_Click( object sender, EventArgs args )
    {
        // Close myself _and_ return the abort result to the caller.
        DialogResult = DialogResult.Abort;
    }
}

請注意,這只是一個(不完整的示例)。 我敢肯定,還有其他解決方案可以滿足您的要求。

1.您打開的表單是應用程序的主要表單。 這與您如何命名表單或表單中的內容無關。 如果關閉主窗體,則應用程序終止。

您可以根據自己的情況執行以下兩項操作:

  1. 隱藏您的登錄表單而不是關閉它
  2. 首先打開您的主表單,然后使用您的登錄表單作為其上方的模式對話框。 在這種情況下,您可以關閉登錄表單,並使應用程序連續運行。

暫無
暫無

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

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