【问题标题】:C# Hide() on startup, without ShowInTaskbar to falseC# Hide() 在启动时,没有 ShowInTaskbar 为 false
【发布时间】:2011-05-22 20:53:30
【问题描述】:

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

现在的问题是,在加载事件中使用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;
}

在此代码之后,热键被禁用。

【问题讨论】:

    标签: .net c#-3.0 hide startup hotkeys


    【解决方案1】:

    防止表单变得可见但仍创建其句柄以便通知图标​​工作需要覆盖 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() 方法将在表单稍后真正可见之前不会运行。因此,将您获得的任何代码移动到此覆盖中。

    【讨论】:

      【解决方案2】:

      我过去所做的是创建一个单独的表单,该表单始终最小化并且 ShowInTaskbar 为 false(因此用户永远不可见),并且此表单拥有 NotyifyIcon。

      然后,我想要显示的任何 UI,我都会开发为单独的表单,我会根据需要显示/隐藏。我发现这比尝试获取一种可能在 taskabr 中显示/隐藏/显示/拥有通知图标的表单更干净。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-05
        • 1970-01-01
        相关资源
        最近更新 更多