2016-10-15 81 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以及正常工作吗? –