2012-02-19 61 views
2

我試圖在新創建的窗體之間切換,但如果我在創建新窗體之前關閉像下面那樣的舊窗體,整個應用程序將退出;如何關閉一個窗口,以防止應用程序終止?

Inital創作

static void Main() 
{ 
Application.EnableVisualStyles(); 
Application.SetCompatibleTextRenderingDefault(false); 
Application.Run(new Login()); 
} 

此登錄屏幕上導致創建其中的那一刻,我躲在屏風,以保持應用程序運行的新窗口;

new MainScreen(uID, this).Show(); 
this.Hide(); 

內MainScreen我有一個「更改用戶」按鈕,這意味着我需要建立一個新的登錄屏幕,但下面的代碼只是退出整個運行的應用程序;

Login newLoginForm = new Login(this); 
mainLoginForm.Close(); 

我在設計這個完全錯誤的方式還是我只是沒有使用正確的方法?任何幫助都會很棒。

+0

[Windows窗體中的多個用戶](http://stackoverflow.com/a/8898718/719186)可能會有幫助。 – LarsTech 2012-02-19 21:49:09

回答

3

當您關閉第一次登錄形成從運行應用程序退出(新登錄()) 所以你應該用run啓動(新MainScreen()), 這種形式的構造函數或的Form_Load裏面打電話給你的登錄。

static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new MainScreen()); 
} 

public MainScreen() 
{ 
    Login loginForm = new LoginForm(); 
    if(loginForm.ShowDialog() == DialogResult.Cancel) 
     Application.Exit(); 
    InitializeComponent(); 
} 
+0

嘿史蒂夫,謝謝你的回覆,但我並不真正明白你的意思。我希望登錄屏幕成爲第一個看過的屏幕。 此外,如果我要通過登錄屏幕創建一個新的MainScreen,然後關閉MainScreen,即使登錄屏幕仍然隱藏,應用程序也會終止。 – r0bb077 2012-02-19 21:52:40

+0

只有在「顯示」事件發生後,您的** MainScreen **纔會顯示在屏幕上。因此,您可以使用MainScreen構造函數或** MainScreen_Load **事件來顯示您的登錄表單,並在結果(Application.Exit(),如果用戶未能憑證或繼續使用應用程序)上採取適當的措施。最終,您的MainScreen將出現,用戶將能夠再次更改當前用戶。 – Steve 2012-02-19 21:59:36

+0

史蒂夫,真棒的東西,謝謝! – r0bb077 2012-02-19 22:21:07

相關問題