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

Rus*_*han 10 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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

在此输入图像描述

man*_*cze 6

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

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

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

如果您有兴趣如何摆脱Windows 10上的大小调整边框:删除WS_THICKFRAME标志.

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

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