使对话框保持在视图中

时间:2011-11-10 06:25:11

标签: c# winforms

我正在使用C#使用Windows窗体应用程序。我创建了一个对话框,要求用户输入用户名和密码等登录详细信息。使用If-else语句,如果登录详细信息匹配,则会出现一个表示“成功”的消息框,对话框将自动关闭。这可以。但是,如果我输入错误的登录详细信息,我会在else语句中显示一个消息框,说明“输入了错误的详细信息”。但是,当我关闭该消息框时,对话框消失。我不希望这种情况发生。我希望对话框保持在视图中,以便用户再次输入正确的详细信息。是否有一些代码行我应该输入以避免关闭对话框?

2 个答案:

答案 0 :(得分:2)

我建议您创建一个新表单,然后将其显示为对话框:

1)创建新表格
2)将Form的MinimizeButton设置为false
3)将Form的MaximizeButton设置为false
4)添加组件:1x文本字段,2x按钮(确定按钮和取消按钮)
5)将Ok按钮的DialogResult设置为:OK
6)将取消按钮的DialogResult设置为:取消
7)添加一个公共方法:public string GetText(){return textbox.text};
8)设置文本框的密码字符

以您的主要形式:

var dialogForm = new MyNewForm();
if (dialogForm.ShowDialog() != DialogResult.OK)
{
   Application.Exit()
}
else 
{
   var pw = dialogForm.GetText(); // string var pw stores the enterd pw now
   // validate your password here

   if (PasswordIsCorrect())
   {
      // some logic here
   } 
}

如果要在循环中显示对话框,请将“if(dialogForm.ShowDialog()...”替换为“while ...”

注意:代码untestet
注意2:请确保您的验证逻辑是安全的。有经验的用户可以反编译您的应用程序以获得验证逻辑

希望有帮助吗?亲切的问候

答案 1 :(得分:0)

检查FormClosing事件,并检查事件。编写一些代码来检查事件,并阻止表单关闭,如果它来自表单中包含的按钮以外的任何内容。