2017-05-02 42 views
0

我有一個登錄表單後,我驗證用戶我打電話的主要形式有以下代碼:隱藏子窗體關閉它,而不是,並返回我的主人C#

frmMain frm = new frmMain(); 
Hide() 
frm.ShowDialog(); 
Show(); 

問題是,當我嘗試使用Hide()或Visible = false隱藏主窗體,爲了將應用程序最小化到托盤欄,主窗體關閉,應用程序將我返回到登錄窗體,就像按下關閉按鈕一樣。

Hide()Show()如何工作?它是否創建另一個實例?

+0

您可以先顯示登錄表單:'formLogin.ShowDialog();'然後'mainForm.ShowDialog();'而不是使用可見性播放。否則,您的問題並不完整:您如何將**應用程序**最小化到托盤欄,您如何恢復,發生了什麼以及您期望發生什麼?說明*「主窗體關閉並且應用程序將我返回到登錄窗體,就像我按下關閉按鈕」*不能清楚地解釋問題。 – Sinatr

+2

隱藏對話框將始終關閉它。您必須改用Show()。考慮使用主窗體的FormClosing事件使其再次可見。 –

回答

1

當模態窗體被隱藏時,它將返回到調用代碼。這就是來龍去脈。我會做的就是改變代碼顯示的主要形式後,要麼關閉登錄表單:

frmMain frm = new frmMain(); 
frm.Show(); 
Close() 

如果你想在主窗體關閉再次顯示登錄表單,您可以使用FormClosing事件,像這樣:

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    frmLogin frmlogin= new frmLogin(); 
    frmlogin.Show(); 
} 

或者在開始時調用主窗體,並從它調用登錄窗體作爲對話框。

-1

提出兩個窗口的形式,1: - 登錄(默認開啓),2: - 主(開放在登錄成功)

1: - 首先登錄窗口將打開 2: - 在成功登錄關閉/隱藏登錄表單並打開/顯示主窗體,這也將是窗口。 3: - 以相同的方式處理任務欄顯示屬性。

相關問題