从Windows窗体中删除标题栏(Windows 10样式)

时间:2016-08-16 19:17:11

标签: c# winforms

我有一个非常简单的类,它继承自System.Windows.Forms.Form并删除了WS_CAPTION 窗口样式。它适用于Windows XP& 7完美。在Windows 10中,仍会绘制一段标题栏,使用自定义标题栏控件时它看起来很难看。

我知道有几种方法可以实现这种外观,但我选择这种方法的原因有很多。我对替代方法不感兴趣 - 这不是我的问题的意图。

我的问题是在Windows 10与Windows 7中呈现它的方式之间的差异是什么?差异不仅仅是风格。看来标题栏仍然以某种身份呈现,即使已删除了WS_CAPTION标志。

class BorderlessForm : System.Windows.Forms.Form
{
    protected override System.Windows.Forms.CreateParams CreateParams
    {
        get
        {
            var _CreateParams = base.CreateParams;
            _CreateParams.Style &= ~0x00C00000; // remove WS_CAPTION
            return _CreateParams;
        }
    }
}

Windows 7屏幕截图(所需外观与MSDN描述一致):

enter image description here

Windows 10屏幕截图(不良外观与MSDN描述不一致):

enter image description here

1 个答案:

答案 0 :(得分:5)

您观察的不是标题栏,而是大小调整边框。

  

我的问题是在Windows 10与Windows 7中呈现方式之间的差异是什么?

原因是在不同版本的Windows上实现不同的外观。

如果您有兴趣如何在Windows 10上删除大小调整边框:删除WS_THICKFRAME标记。

或者(也许更优选)您可以将表单的FormBorderStyle更改为其他值。测试任何最适合你的方法。

然而,没有什么能够精确地定义整个表单边框。这取决于外观和感觉(主题)。从技术上讲,你不能指望表单的边框在不同的实现下不会有所不同。您只能通过测试来确保。