首页 > 解决方案 > 当 ShowInTaskBar 属性为 false 时,LoginForm 会自动隐藏或关闭

问题描述

我正在使用系统登录在 C# Winforms 中开发一个应用程序,其中我有两种形式,一种是主要MainForm的,另一种是用于登录的LoginForm

此应用程序有一个Modern Flat UI Design界面,因此它希望LoginForm form显示在MainForm表单前面,而不是在任务栏中显示其图标,并且不允许用户与之交互MainForm以显示它已使用的方法ShowDialog();

LoginForm压缩代码:

public partial class LoginForm : Form
{
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        this.ShowInTaskbar = this.ShowIcon = false;
    }
}

MainForm压缩代码:

public partial class MainForm : Form
{
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        new LoginForm().ShowDialog();
        //new LoginForm().ShowDialog(this);
    }

    protected override void OnShown(EventArgs e)
    {
        base.OnShown(e);

        //new LoginForm().ShowDialog();
        //new LoginForm().ShowDialog(this);
    }
}

我的问题是没有别的开始MainForm,显示LoginForm大约 2 秒钟然后隐藏它,然后,我最小化MainForm以验证LoginForm没有移动到后面MainForm,但事实证明它LoginForm不存在。

如果我删除该属性ShowInTaskbar = false;,那么一切正常,但LoginForm它显示在任务栏中,这正是我不想要的。

那么,我怎样才能在不出现在任务栏中的情况下将我的显示LoginForm在前面呢?MainFormLoginForm

注意:是的,虽然LoginForm没有关闭,但用户不能与之交互,MainForm关闭的唯一方法LoginForm是正确记录或单击按钮关闭LoginForm呼叫Application.Exit();

此外,我试图隐藏MainForm开始this.Hide();但同样LoginForm消失。

标签: c#formswinforms

解决方案


设置ShowInTaskBarShowIcon在对话框的构造函数中:

public partial class LoginForm : Form
{
    public LoginForm()
    {
        InitializeComponent();
        this.ShowInTaskbar = false;
        this.ShowIcon = false;
    }
}

然后Shown在主窗体的方法中显示它:

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
    }
    protected override void OnShown(EventArgs e)
    {
        base.OnShown(e);
        new LoginForm().ShowDialog();
    }
}

推荐阅读