2016-10-15 79 views
0

我有一個Login Form正在檢查登錄時間的角色。如果角色是Normal User,它將開放Form1。如果角色是Register那麼它會打開Form2。開放Form1Form2後,我正在使用this.close關閉登錄表單。當角色是Normal User它完全打開Form1和Closing Login Form,而當角色是Register時,它將關閉這兩個表單。C#形式關閉問題#

這是代碼。

if (ROLE != "Register") 
{ 
    Form1 form1= new Form1(); 
    if (ROLE == "Normal User") 
    { 
     form1.Show(); 
     this.Close(); 
    } 
    if (ROLE == "Bulk User") 
    { 
     form1.Show(); 
     this.Close(); 
    } 
} 
else 
{ 
    Form2 form2= new Form2(); 
    form2.Show(); 
    this.Close(); 
} 

Login FormForm1是WPF形式雖然Form2是一個Windows窗體

+1

是否有可能改變這個特定代碼的設計?在關閉子表單之前刪除父表單,即登錄表單不是一種好的做法。處理登錄表單之外的上述邏輯(關閉登錄表單並顯示form1或form2邏輯)最佳地點將是登錄表單的父級。 –

+0

@MukulVarshney,你的意思是我只要我的應用程序正在運行,我就不能關閉'登錄表單'。 –

+1

我相信你應該重寫Appl.xaml中的'OnStartup(StartupEventArgs e)'以開始LoginForm。 – shadow

回答

4

這是因爲當父窗體得到關閉第二種形式得到處理,你可以做以下

else 
{ 
     Form2 form2 = new Form2(); 
     form2.Show(); 
     this.Hide(); 
     form2.Closed += (s, args) => this.Close(); 
} 
+0

會不會影響form1的同樣的問題? – ChrisF

+1

正如他所提到的,表單1是wpf表單,它的工作原理是正確的,這就是爲什麼我建議只用於第二種形式。 –

+0

@GevorgNarimanyan,我應該讓WPF中的form2以及正常工作嗎? –