[英]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.您打開的表單是應用程序的主要表單。 這與您如何命名表單或表單中的內容無關。 如果關閉主窗體,則應用程序終止。
您可以根據自己的情況執行以下兩項操作:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.