.net C#在启动时隐藏(),不将ShowInTaskbar设置为false

.net C#在启动时隐藏(),不将ShowInTaskbar设置为false,.net,c#-3.0,hide,startup,hotkeys,.net,C# 3.0,Hide,Startup,Hotkeys,我正在尝试制作一个带有热键和任务栏托盘中启动选项的应用程序 现在的问题是,在加载事件中使用this.Hide(),不会产生任何效果。我可以添加this.ShowInTaskbar=false,但在我再次将其设置为true之后,为了显示窗口,它会自动禁用热键 有没有其他方法可以在启动时隐藏我的表单,或者阻止我的热键注销 隐藏表单的我的代码: private void frmMain_Load(object sender, EventArgs e) { if (StartBG())

我正在尝试制作一个带有热键和任务栏托盘中启动选项的应用程序

现在的问题是,在加载事件中使用
this.Hide()
,不会产生任何效果。我可以添加
this.ShowInTaskbar=false
,但在我再次将其设置为true之后,为了显示窗口,它会自动禁用热键

有没有其他方法可以在启动时隐藏我的表单,或者阻止我的热键注销

隐藏表单的我的代码:

private void frmMain_Load(object sender, EventArgs e)
{
    if (StartBG())
    {
        this.Hide();
        this.ShowInTaskbar = false;
        notifyIcon.Visible = true;
        notifyIcon.ShowBalloonTip(3000, "Kore screenshots", "The application is started and will run on the background.", ToolTipIcon.Info);
    }
}
在上面的代码之后,热键仍然有效

private void showform()
{
    this.Show();
    this.ShowInTaskbar = true;
    notifyIcon.Visible = false;
    this.WindowState = FormWindowState.Normal;
}

执行此代码后,热键将被禁用。

要防止窗体可见,但仍要创建其句柄以使通知图标正常工作,需要重写SetVisibleCore()。像这样:

    protected override void SetVisibleCore(bool value) {
        if (value && !this.IsHandleCreated) {
            value = false;
            CreateHandle();
            // Put your Load event code here
            //...
        }
        base.SetVisibleCore(value);
    }

请注意,在表单稍后实际可见之前,Load事件或OnLoad()方法不会运行。因此,请将您获得的所有代码移到这个覆盖中。

我过去所做的是创建一个单独的表单,该表单总是最小化并显示InTaskBar false(因此用户永远看不到它),并且该表单拥有NotyifyIcon

然后,任何我想显示的UI,我都开发成单独的表单,并根据需要显示/隐藏。我发现这比试图得到一个可能在taskabr中显示/隐藏/显示/拥有notifyicon的表单更干净