C# 创建一个登录表单
我有一个表单,我想提供一些安全性,但到目前为止,我只创建了一个表单来完成我的所有工作。我想创建一个新表单,当应用程序启动时,它会出现在我的主表单前面。然后根据MySQL数据库验证输入的密码。我已经记下了MySQL的所有内容,但是不知道如何在我的主窗体前面弹出另一个窗体,它禁用主窗体,等待密码窗体验证,然后在窗体验证后消失,让用户执行他们的工作。我还需要将经过身份验证的用户信息传输回我的主窗体。您可以从主窗体的构造函数调用,如果成功,则返回true,或者在加载主窗体之前将的启动更改为登录窗体。“显示”对话框是模态对话框。您可以创建一个新表单,然后使用该函数。如果从主窗体显示窗体,它将以模态方式显示 以登录方式创建此表单,如果用户经过身份验证,则关闭表单;如果用户名和密码不正确,则显示错误 从MSDN:C# 创建一个登录表单,c#,winforms,C#,Winforms,我有一个表单,我想提供一些安全性,但到目前为止,我只创建了一个表单来完成我的所有工作。我想创建一个新表单,当应用程序启动时,它会出现在我的主表单前面。然后根据MySQL数据库验证输入的密码。我已经记下了MySQL的所有内容,但是不知道如何在我的主窗体前面弹出另一个窗体,它禁用主窗体,等待密码窗体验证,然后在窗体验证后消失,让用户执行他们的工作。我还需要将经过身份验证的用户信息传输回我的主窗体。您可以从主窗体的构造函数调用,如果成功,则返回true,或者在加载主窗体之前将的启动更改为登录窗体。“显
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();
}
我更喜欢使用这种登录表单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表单并重新显示登录表单,我们有一个类来实现此功能。为什么不使用模态表单?+1来使用ShowDialog():@muncherelli:Show()和ShowDialog()之间的重要区别是因为ShowDialog()强制用户响应打开的窗口,他们无法最小化窗口并继续使用应用程序。Show()允许用户继续使用主应用程序。我是否将其放在Form1\u加载方法中?是否添加登录按钮?或者你只是想让它自动弹出?在显示表单之前,应确保表单已完成加载。此链接告诉您Windows窗体的事件顺序:我看不到将此代码放在何处,因此它会在窗体加载后显示。如果我将其放入Form1\u Load,则在显示表单之前会弹出该框。我更希望它位于主窗体的前台(模型)。form.Showed是在构造和渲染窗体时触发的最终事件。当窗体实际显示时,将激发Form.Showed。尝试处理Form.Showed事件并在该函数中添加代码