Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用用户自定义控件的登录屏幕_C#_.net_Forms_Parent - Fatal编程技术网

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

C# 使用用户自定义控件的登录屏幕,c#,.net,forms,parent,C#,.net,Forms,Parent,我遵循了今天在这里得到的一些建议,现在需要更多的帮助: 我有一个带有登录逻辑的用户控件。 在mainForm中,我使用的是: private void Form1_Load(object sender, EventArgs e) { LoginScreen login = new MainMenu(); login.Parent = this; login.Dock = DockStyle.Fill;

我遵循了今天在这里得到的一些建议,现在需要更多的帮助:

我有一个带有登录逻辑的用户控件。 在mainForm中,我使用的是:

private void Form1_Load(object sender, EventArgs e)
{
        LoginScreen login = new MainMenu();
                    login.Parent = this;
                    login.Dock = DockStyle.Fill;
                    login.Show();
}
但我猜它不是模态的,因此不会停止原始表单应用程序。当然,在登录表单关闭(并且登录成功)之前,我需要主表单不继续

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


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

只需使用
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()

只需使用
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()

    • 而不是
      login.Show()
      您可以使用
      login.ShowDialog(这个)
      ,使其成为表单的模式弹出窗口。

      而不是
      login.Show()
      您可以使用
      login.ShowDialog(这个)
      ,使其成为窗体的模式弹出窗口。

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

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

      该用户控件没有ShowDialog方法:(该用户控件没有ShowDialog方法:(