2014-10-27 74 views
0

我有一個使用多個窗體的Windows窗體應用程序。該程序首先運行帶有登錄屏幕的表單,該登錄屏幕允許用戶使用其設置選擇特定配置文件,並且有一個按鈕可打開另一個表單以創建新配置文件。正確地在C中打開和關閉多個窗體窗體#

的代碼我使用看起來像這樣

Form2 secondform = new Form2(); 

private void aButton_Click(object sender, EventArgs e) 
{ 
    this.Hide(); 
    secondform.Show(); 
} 

當我嘗試使用

this.Close(); 

,而不是

this.Hide(); 

整個應用程序退出,即使我把它顯示新的形式後。

的問題是,一旦你輸入的主程序,只有這樣,才能關閉程序完全是點擊退出按鈕,我已經把在那裏,它採用

Application.Exit(); 

如果您嘗試右鍵單擊任務欄圖標並從那裏關閉,或使用紅色退出按鈕,該過程仍在運行,並且必須從任務管理器終止。

我該怎麼做才能讓應用程序正確關閉?

+0

你嘗試關閉是第一個通過你的應用程序打開的形式? – Steve 2014-10-27 15:08:09

回答

2

您應修改您的WinForm應用程序的主入口點,即「在Program.cs」文件的靜態主要方法,顯示登錄表單作爲一個模式對話框出現,然後調用Application.Run( )方法與主窗體的實例。下面是一個簡單的例子:

static class Program 
{ 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 

     // Show the login form 
     LoginForm loginForm = new LoginForm(); 
     loginForm.ShowDialog(); 

     // Show the main form 
     Application.Run(new MainForm()); 
    } 
} 

class LoginForm : Form 
{ 
    public LoginForm() 
    { 
     BackColor = Color.Blue; 
     Text = "Login Form"; 
    } 
} 

class MainForm : Form 
{ 
    public MainForm() 
    { 
     BackColor = Color.Red; 
     Text = "Main Form"; 
    } 
} 

上面的代碼首先會顯示一個虛設登錄表單(藍色),並且當它關閉時,主要形式(紅色)將被顯示。代碼非常簡單,不需要隱藏和特殊關閉表單等等。

+1

啊哈!太棒了,我知道有一些方法可以正確地做到這一點。謝謝,form.ShowDialog();正是我所需要的。 – electroball09 2014-10-27 15:28:33

0

您可以使用退出按鈕在窗體上使用form.closing事件。然後使用application.close()。 您也可以將登錄表單引用到其打開的表單中(因爲其他原因您可能需要這樣做),然後您可以使用全局表單並將登錄表單存儲在該表單中。然後執行loginForm.close()以退出應用程序。

1

您可以嘗試是這樣的:

private void aButton_Click(object sender, EventArgs e) 
{ 
    this.Hide(); 
    secondform.Show(); 
    secondform.FormClosed += new FormClosedEventHandler(sf_FormClosed); 
} 
void sf_FormClosed(object sender, FormClosedEventArgs e) 
{ 
    Application.Exit(); 
}