2014-05-08 40 views
-1

我做了一個mainForm(這是我的程序實際啓動的地方)和一個loginForm。 loginForm在程序啓動時作爲對話框出現,所以當我正確登錄時它會關閉,並且mainForm會彈出,就像它假設的那樣。C#winform對話不關閉程序

當我打到我的mainForm上的紅色「X」(右上角)時,我的整個應用程序關閉,這是很好的。但是當我以對話形式打開「X」時,我的對話關閉了,但我的主窗體仍然彈出?

我該如何解決這個問題?提前致謝!

private void loginButton_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     var sr = new System.IO.StreamReader("C:\\" + inlogNaamTextbox.Text + "\\Login.txt"); 
     gebruikersnaam = sr.ReadLine(); 
     passwoord = sr.ReadLine(); 
     sr.Close(); 

     if (gebruikersnaam == inlogNaamTextbox.Text && passwoord == inlogPasswoordTextbox.Text) 
     { 
      MessageBox.Show("Je bent nu ingelogd!", "Succes!"); 
      this.Dispose(); 
     } 
     else 
      MessageBox.Show("Gebruikersnaam of wachtwoord fout!", "Fout!"); 
    } 
    catch (System.IO.DirectoryNotFoundException ex) 
    { 
     MessageBox.Show("De gebruiker bestaat niet!", "Fout!"); 
    } 
} 

這是我的登錄代碼

+1

我會很高興看到你的代碼。你如何處理登錄表單結果? –

+2

如果你不顯示你正在使用的代碼,很難判斷..我們看不到你看到的是什麼 – MethodMan

+0

@ user3609166確定的候選人,你贏得了我的投票。 – MethodMan

回答

1

的算法應該是以下 - 在應用程序啓動時顯示的登錄表單方法Main。如果用戶登錄成功,則將此表格的DialogResult設置爲DialogResult.OK。然後處理登錄表單返回DialogResult。如果它不是OK那麼只是存在的應用程序。否則運行你的主窗體:

using(LoginForm login = new LoginForm()) 
{ 
    if (login.ShowDialog() != DialogResult.OK) 
     return; 
} 

Application.Run(new MainForm()); 
+0

當我點擊登錄對話框窗體上的X時,這段代碼是否幫助關閉程序?我應該在哪裏放? loginform還是main? – user3609166

+1

爲什麼不嘗試它,讓我們知道與問一個多餘的問題..顯示一些努力 – MethodMan

+0

@ user3609166你應該把它放在'Program.cs'文件的Main方法中。是的,如果您關閉登錄表單而未設置DialogResult –