创建一个登录表单,如果凭据正确,该登录表单将进入主表单。这是基本的伪代码:
ShowLoginForm()
if (DialogResult == OK)
CheckCredentials();
if (credentials == VALID)
ShowMainForm();
else
LoopBackAndShowLoginFormAgain(); //repeat process...
else
CloseLoginForm();
但是,我对 WinForms 还比较陌生,并且还在摸索。我正在尝试决定将我的循环放在哪里(Main() 或 LoginForm 中的某个地方)。我应该在哪里检查凭据?这是我到目前为止:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
LoginForm loginForm = new LoginForm();
if (loginForm.ShowDialog() == DialogResult.OK)
{
Application.Run(new AutoSignerForm());
}
}
我不想退出并重复打开登录表单(我在这里寻找一些效率,所以我想使用相同的登录对话框)。任何指示、提示或想法?
最佳答案
我会做以下事情:
Program.cs 中的
LoginForm login_form = new LoginForm();
if(login_form.ShowDialog() == DialogResult.OK) {
Application.Run(new MainForm());
}
// replace with the actual login
if(textBoxUsername.Text == "my user" && textBoxPassword.Text == "my pass") {
// save the user has logged in somewhere
// set the dialog result to ok
this.DialogResult = DialogResult.OK;
// close the dialog
this.Close();
} else {
// login failed
MessageBox.show("Login failed");
// do not close the window
}
现在,您将保持 LoginDialog 显示,直到用户输入有效凭据或他放弃尝试并且应用程序关闭。这样,您将只有一个 LoginForm 实例,这将是一种很好的用户体验。
此外,您可以确定 MainForm 不会在用户登录成功的情况下进行初始化和显示。
关于c# - 如何创建winform登录对话框并保持循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11140852/