在登录表单上输入用户名和密码后,处理登录表单并显示主表单
本文关键字:表单 登录 处理 显示 输入 用户 密码 | 更新日期: 2023-09-27 18:36:58
我使用以下代码运行LoginForm:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new LoginForm());
//Application.Run(new MainForm());
}
当用户按下回车按钮时,我想释放或关闭登录表单并想要运行主窗体,但我得到这个异常:"用户代码未处理无效操作异常"
输入按钮的点击处理程序如下:
private void LoginFormEnterButton_Click(object sender, EventArgs e)
{
try
{
MainForm a = new MainForm();
a.Show();
this.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
我该怎么做才能释放登录表单,然后成功运行主表单?
您无法释放主窗口。你需要改变方式。
首先将 MainForm 设置为启动窗口。
Application.Run(new MainForm());
在 MainForm 的构造函数中加载/显示 LoginForm,
public MainForm()
{
LoginForm login=new LoginForm();
login.ShowDialog();
InitializeComponent();
}
和单击登录表单中的处理程序代码,
private void LoginFormEnterButton_Click(object sender, EventArgs e)
{
this.Close();
}
我认为主应用程序循环在关闭登录表单时结束。作为替代方案,您可以使用主窗体运行该应用程序,并让它将登录表单显示为模式对话框。然后,如果用户未成功登录,您可以关闭应用程序
我认为你应该改变你的方法。
开始运行主窗体。
在主窗体的 Load 事件中,以模式方式
运行登录窗体在登录表单中执行验证并返回 DialogResult.OK。
在主窗体中,继续或退出,具体取决于从登录窗体返回的内容。
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
public void MainForm_Load(object sender, EventArgs e)
{
// The using statement will take care of closing and disposing the login form
using(LoginForm f = new LoginForm())
{
if(f.ShowDialog() != DialogResult.OK)
{
Application.Exit();
return;
}
}
// continue with main form processing
}
我使用ApplicationContext而不是传递表单。
Application.Run(new TerminalApplicationContext());
在CTOR中,我显示一个表格
public TerminalApplicationContext()
{
login = new FormLogin();
login.Logon += new FormLogin.LogonDelegate(login_Logon);
login.Show();
}
然后在委托"login_logon"中,我处理"FormLogin"并显示另一个。