C#线程处理

时间:2012-06-14 02:25:26

标签: c# winforms

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();
   }
 else
   {
      //else part code
   }
}

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

3 个答案:

答案 0 :(得分: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
           }
        }

答案 1 :(得分:0)

问题是您未在代码中将isValiduser设置为true。所以它会更新的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 
}

答案 2 :(得分:-1)

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