繁体   English   中英

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

[英]Remove Title Bar from Windows Form (Windows 10 style)

我有一个非常简单的类,该类继承自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描述一致):

在此处输入图片说明

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

在此处输入图片说明

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

我的问题是什么导致在Windows 10和Windows 7中呈现这种方式的差异?

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

如果您有兴趣即使在Windows 10上也要摆脱大小调整边框,请执行以下操作:删除WS_THICKFRAME标志。

另外(可能更可取),您可以将窗体的FormBorderStyle更改为其他值。 测试最适合您的方法。

但是,没有什么东西可以精确地定义整个表格边界。 这取决于外观(主题)。 从技术上讲,您不能期望表单的边界在不同的实现下不会有所不同。 您只能通过测试来确保。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM