我已经遵循了今天在这里提出的一些建议,现在需要更多的帮助:
我有一个带登录逻辑的用户控件。 在mainForm我使用这个:
private void Form1_Load(object sender, EventArgs e)
{
LoginScreen login = new MainMenu();
login.Parent = this;
login.Dock = DockStyle.Fill;
login.Show();
}
但我想这不是模态的,因此不会停止原始的Form应用程序。当然,我需要主表单不要继续,直到登录表单关闭(并登录成功)。
使用事件是否正确?让登录对象引发登录成功的事件并让MainForm处理它 - 运行应用程序?
编辑:这是用户控件,没有可用的ShowDialog方法。
答案 0 :(得分:3)
只需使用ShowDialog()
代替Show()
。
此外,ShowDialog()
会返回一个DialogResult,因此您可以检查用户是否未按OK
并在此情况下关闭表单:
if(form.ShowDialog() != DialogResult.OK)
{
this.Close();
}else
{
//if login it's ok continue with main form loading...
}
修改强>
鉴于它是一个用户控件:
ShowDialog()
代码中对其进行实施并致电FormLoad
(代码类似于您发布的代码,但您需要实例化登录表单而不是用户控件)答案 1 :(得分:0)
您可以使用login.Show();
代替login.ShowDialog(this);
,而不是{{1}},使其成为表单的模式弹出窗口。
答案 2 :(得分:0)
如果它不是来自Form
类(奇怪的),只需创建一个窗体并对其进行控制,然后调用窗体的ShowDialog
方法。不过,您必须以某种方式将表单的关闭连接到登录屏幕上的控件。如果它触发一些事件,那应该不是问题。