显示主窗体前显示登陆窗口的完美解决方案

    想要在显示主窗体前先显示登陆窗口,于是在登陆窗体上设置"登陆","取消"两个Button,在VS中设置登陆按钮的DialogResult 是OK,取消按钮为Cancel.显示窗体时,用户点击登陆,如果用户的登陆信息是错误的,登陆窗体照样会关闭,这时候你不得不再次把登陆窗体给Show出来,这时候,你会发现要用一个while(true)的循环结构.
 每次看到while(true)的结构就觉的不爽,而且这种实现方式窗体会闪烁,在网上找了一些资料,都很不全,结合一下,给出了我的实现方式:
  首先,设置登陆按钮和取消按钮的DialogReuslt为none;
        然后,为登陆按钮添加单击事件:
private   void  button1_Click( object  sender, System.EventArgs e)
        
{
            
if(user.Login())
            
{
                
this.DialogResult = DialogResult.OK;
                
this.Close();
            }

            
        }

   然后,改写Main函数:
    [STAThread]
        
static   void  Main() 
        
{
            LoginForm loginForm 
= new LoginForm();
            loginForm.ShowDialog();
            
if( loginForm.DialogResult.Equals(DialogResult.OK))
            
{
                Application.Run(
new MainForm());
            }

        }

这样一个完美的登陆模块就实现啦

你可能感兴趣的:(解决方案)