创建登录表单

时间:2010-08-09 17:07:42

标签: c# winforms

我有一个表单,我想提供一些安全性,但到目前为止,我只创建了一个表单来完成我的所有工作。我想在应用程序启动时创建一个在我的主表单前弹出的新表单。然后验证针对MySQL数据库输入的密码。我有所有的MySQL东西,但想知道如何在我的主窗体前面弹出另一个窗体,它禁用主窗体,等待密码窗体验证,然后在验证窗体后消失并让用户执行他们的工作。我还需要将经过身份验证的用户的信息传回我的主要表单。

3 个答案:

答案 0 :(得分:7)

您可以创建新表单,然后使用ShowDialog功能。如果您从主表单中显示表单,它将以模态方式显示。

以登录样式创建并在用户通过身份验证时关闭表单,如果用户名和密码不正确则显示错误。

来自MSDN:

public void ShowMyDialogBox()
{
   Form2 testDialog = new Form2();

   // Show testDialog as a modal dialog and determine if DialogResult = OK.
   if (testDialog.ShowDialog(this) == DialogResult.OK)
   {
      // Read the contents of testDialog's TextBox.
      this.txtResult.Text = testDialog.TextBox1.Text;
   }
   else
   {
      this.txtResult.Text = "Cancelled";
   }
   testDialog.Dispose();
}

答案 1 :(得分:1)

我更喜欢使用ApplicationContext来表示此类型的日志< - > shell形式转换行为。

您的主要方法:

public static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new MyFancyContext());
}

MyFancyContext的实施:

public class MyFancyContext : ApplicationContext
{
    private LogOnForm logOnForm;

    private ShellForm shellForm;

    public MyFancyContext()
    {
        this.logOnForm = new LogOnForm();
        this.MainForm = this.logOnForm;
    }

    protected override void OnMainFormClosed(object sender, EventArgs e)
    {
        if (this.MainForm == this.logOnForm
            && this.logOnForm.DialogResult == DialogResult.OK)
        {
            // Assume the log on form validated credentials
            this.shellForm = new ShellForm();
            this.MainForm = this.shellForm;
            this.MainForm.Show();  
        }
        else
        {
            // No substitution, so context will stop and app will close
            base.OnMainFormClosed(sender, e);
        }
    }
}

MainForm是当前正在接收消息的表单。

这种类型的设置的优点是,如果你想做一些事情,比如在一些空闲超时之后隐藏shell表单并重新显示表单上的日志,我们就有一个类来实现这个功能。

答案 2 :(得分:0)

您可以从主窗体的构造函数中调用showdialog(loginform),如果成功则返回true,或者在加载主窗体之前将启动更改为登录窗体。显示对话框是模态的。