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())
;
那么,有人能告诉我这段代码有什么问题吗?
答案 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表单。