-1

程序.cs

using (Login login = new Login())
{ 
    login.ShowDialog(); //Close this form after login is correct in login form button_click
}
if (isValiduser == true) //Static variable created in application to check user
{           
     Application.Run(new MainInterface());
}

登录表单点击事件

private void btnLogin_Click(object sender, EventArgs e)
{
  if(isValiduser == true)
   {
      this.Close();
   }
 else
   {
      //else part code
   }
}

根据此代码,当我们在登录表单中单击登录事件并且 isValiduser 返回 true 时,Program.cs 将运行MainInterface表单。但实际上,这段代码没有运行Application.Run(new MainInterface());那么,谁能告诉我这段代码有什么问题?

4

3 回答 3

1

你的代码Program.CS应该是

 using (Login login = new Login())
    { 
         login.ShowDialog(); //Close this form after login is correct in login form button_click
         if (isValiduser == true) //Static variable created in application to check user
         {           
            Application.Run(new MainInterface());
         }
    }

你的登录点击事件应该是这样的

private void btnLogin_Click(object sender, EventArgs e)
        {
          if(isValiduser == true)
           {
              //this.Close();
              this.DialogResult = DialogResult.OK;
           }
         else
           {
              //else part code
           }
        }
于 2012-06-14T05:11:40.650 回答
0

问题是你没有isValidusertrue你的代码那样设置。所以它会更新运行MainInterface形式。

假设您在 Program.cs 文件中将名为 isValiduser 的静态变量定义为

static class Program
{
    public static bool isValiduser = false;

    [STAThread]
    static void Main()
    {
      // rest of your code 

然后当您单击登录按钮时,您需要根据登录状态设置此变量。您可能需要为此使用单独的方法。

private void btnLogin_Click(object sender, EventArgs e)
{
    // call validate user method and set value to `isValiduser`
    Program.isValiduser= IsValidUser("username", "password"); // here for testing i'm set it as true 
    if(Program.isValiduser== true)
    {
      this.Close();
    }
    else
    {
      //else part code
    }
}

你可以有方法来验证用户

private bool IsValidUser(string name, string pw)
{
    return true; // impliment this method 
}
于 2012-06-14T05:01:24.483 回答
-1

我怀疑正在发生的是,当您到达控件时,this.Close()该控件返回到主线程并且应用程序结束(如果之后没有进一步的代码)。即你的程序从 main 的第一行开始到最后一行结束。因此,如果您先打开登录表单,则需要在关闭登录表单之前打开 MainInterface 表单。

于 2012-06-14T04:03:52.590 回答