使用用户自定义控件登录屏幕

时间:2011-03-17 16:04:51

标签: c# .net forms parent

我已经遵循了今天在这里提出的一些建议,现在需要更多的帮助:

我有一个带登录逻辑的用户控件。 在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方法。

3 个答案:

答案 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方法。不过,您必须以某种方式将表单的关闭连接到登录屏幕上的控件。如果它触发一些事件,那应该不是问题。