【问题标题】:How to make a window have taskbar text but no title bar如何使窗口有任务栏文本但没有标题栏
【发布时间】:2010-09-16 22:16:36
【问题描述】:

如何使我的窗口没有标题栏,但在任务栏中显示一些描述性文本? 如果你设置了表单的 .Text 属性,那么 .net 会给它一个标题栏,这是我不想要的。

        this.ControlBox = false;
        this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
        this.MaximizeBox = false;
        this.MinimizeBox = false;
        this.ShowInTaskbar = true;
        this.Text = "My title for task bar";

我找到了一个部分解决方案来覆盖 CreateParams:

    protected override System.Windows.Forms.CreateParams CreateParams
    {
        get
        {
            System.Windows.Forms.CreateParams cp = base.CreateParams;
            cp.Style &= ~0x00C00000; // WS_CAPTION
            return cp;
        }
    }

但是,这会导致我的窗口被调整大小,就好像它们有一个标题栏一样,即它比它应该的高。有什么好的解决办法吗?

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

    在我的情况下,我有一个带有FormBorderStyle = FormBorderStyle.SizableToolWindow 的表单,下面的CreateParams 覆盖就成功了(即我现在有一个没有标题且标题没有额外边距的表单,但它将标题保留在任务栏中):

    protected override System.Windows.Forms.CreateParams CreateParams
    {
        get
        {
            var parms = base.CreateParams;
            parms.Style &= ~0x00C00000; // remove WS_CAPTION
            parms.Style |= 0x00040000;  // include WS_SIZEBOX
            return parms;
        }
    }
    

    【讨论】:

      【解决方案2】:

      一种研究方法可能是将FormFormBorderStyle 属性设置为None(而不是FixedDialog)。

      这种方法的缺点是您会丢失窗口的边框以及标题栏。这样做的结果是您失去了通常使用 Windows 窗体“免费”获得的表单重新定位/调整大小逻辑;您需要通过在表单的 MouseDown 和 MouseMove 事件处理程序中实现自己的表单移动/调整大小逻辑来处理此问题。

      我也有兴趣了解更好的解决方案。

      【讨论】:

        【解决方案3】:

        只需将边框样式设置为无。

        this.FormBorderStyle = FormBorderStyle.None;
        

        【讨论】:

          【解决方案4】:

          一旦您使用 FormBorderStyle 移除了边框,如前所述,您可以相当轻松地使其可拖动。我在http://www.blackwasp.co.uk/DraggableBorderless.aspx 对此进行了描述。

          【讨论】:

          • 很好的例子,但是在现实世界中,但是拖动表单时往往有更多的考虑,例如,如果鼠标在控件上或控件之间,我们不想拖动,或者如果它接近边界想要调整大小。
          • 当然。您还需要捕获它,测试您与表单边界的距离,更改鼠标指针,从 Windows 获取首选边框大小等。不过对于一个示例来说有点太多了 - 也许我会创建另一个。跨度>
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-11-03
          • 2015-08-27
          • 2010-10-20
          • 2013-04-21
          • 2015-09-30
          • 2011-07-20
          相关资源
          最近更新 更多