2011-03-17 61 views
0

我遵循了一些建议,我今天到这里,现在需要更多的帮助:使用用户自定义控件登录屏幕

我有一个用户控件与登录逻辑。 在MainForm中我使用这个:

private void Form1_Load(object sender, EventArgs e) 
{ 
     LoginScreen login = new MainMenu(); 
        login.Parent = this; 
        login.Dock = DockStyle.Fill; 
        login.Show(); 
} 

但我想它不是模态的,因此不停止原窗体应用程序。当然,我需要主窗体不会继续,直到登录窗体关闭(并且登录成功)。

会使用正确的事件吗?让登录对象引发登录成功的事件并让MainForm处理它 - 运行应用程序?

编辑:这是用户控件,没有ShowDialog方法可用。

回答

3

只需使用ShowDialog()而不是Show()

此外,ShowDialog()返回的DialogResult,这样你就可以检查用户是否不按OK和关闭形式在这种情况下:

if(form.ShowDialog() != DialogResult.OK) 
{ 
    this.Close(); 
}else 
{ 
    //if login it's ok continue with main form loading... 
} 

编辑:

鉴于这是一个用户控件:

  • 创建一个新的表单类并添加用户控件(例如使用设计器)
  • 实例化,并调用你的FormLoad代码ShowDialog()(代码类似于您发布的一个,但你需要实例化的登录表单,而不是你的用户控件)
+0

该用户控件没有ShowDialog方法:( – Mocco 2011-03-17 16:08:14

+0

哦,这是一个用户控件...让我编辑;) – digEmAll 2011-03-17 16:11:04

+0

检查我的编辑;) – digEmAll 2011-03-17 16:23:07

0

相反的login.Show();您可以使用login.ShowDialog(this);,使其成为窗体的模态弹出窗口。

0

如果它不是从Form类(这很奇怪)派生的,只需创建一个窗体并将其控制在窗体上,然后调用ShowDialog窗体的方法。不过,您必须以某种方式将表单关闭到登录屏幕上的控件。如果它引发了一些事件,这应该不成问题。