2012-03-09 80 views
2

可能重複:
How can I close a login form and show the main form without my application closing?如何在不關閉完整應用程序的情況下關閉第一個表格?

我怎麼能收出帶完全關閉的應用程序中的第一個形式?
C#。作爲一個例子,如果我的第一個表單是在輸入用戶名和密碼後登錄表單的,如果他們是正確的,表單應該關閉並且其他表單需要打開。

我試圖this.close()但我的全部應用程序退出:(。那之後,我試着this.Hide()它的工作原理,但我的形式仍在運行剛剛從UI隱藏。

TY

+0

你不能。不要將您的登錄名用作主要表單,將其用作輔助表單。您可以打開它,獲取憑據,然後像平常一樣關閉它。 – 2012-03-09 18:30:14

回答

0

在你的Program.cs,你應該讓它創建一個你希望長時間運行的表單的實例,而不僅僅是登錄表單

然後,你可以讓另一個表單顯示登錄表單,從用戶那裏獲取該信息,我會回到你的其他表格

0

這是因爲您正在關閉的窗口是主應用程序的窗口。關閉該窗口將關閉整個應用程序。

現在這裏是修復:

  1. 創建第二個FormLoginForm例如
  2. 在主窗體加載事件處理(添加一個如果沒有的話),顯示LoginForm問用戶輸入他/她的憑證。

一旦你檢查這些憑據您可以從事件處理程序返回如果證書是好的,在這種情況下,主窗口中會顯示和應用程序將正常運行或關閉主窗口,整個應用程序會關掉。

5

其實很簡單。在你的Program.cs主靜態方法中使用下面的代碼來啓動你的LoginForm。

var myLoginForm = new LoginForm(); 
myLoginForm.Show(); 
Application.Run(); 
從LoginForm的

然後,只需記住關閉它這樣之前推出下表:

var myNextForm = new NextForm(); 
myNextForm .Show(); 

this.Close(); 

如果你寧願只是想關閉應用程序登錄失敗只是後執行下列操作:

this.close(); 
Application.Exit(); 

希望它有幫助!

0

使用表單時,您必須認識到調用Application.Run()只是將應用程序主線程切換到窗體UI線程。當表單調用Close()時,它將完成它需要做的任何處理,並從Application.Run()調用繼續。如果您的登錄表單的某些屬性已設置(frmLogin.LoginSuccessful或其他),則可以在下一個表單上運行另一個Application.Run()後執行此操作。

但是,這不是最佳實踐(IMO)。你應該做的是在你的主表單中打開登錄表單,然後主表單將在登錄表單關閉後繼續運行。

相關問題