创建一个登录表单,如果凭据正确,该登录表单将进入主表单。这是基本的伪代码:
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());
}
-
在 LoginDialog 中,处理“Login”按钮(或任何名称)上的单击事件
// 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
}
现在,您将保持显示登录对话框,直到用户输入有效的凭据或者他放弃尝试并且应用程序关闭。这样您将只有一个 LoginForm 实例,并且这将是一种很好的用户体验。
另外,您可以确保在用户未成功登录的情况下,MainForm 不会初始化并显示。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)