从Windows窗体(Windows 10样式)中删除标题栏
问题描述:
我有一个非常简单的类,它从System.Windows.Forms.Form继承并删除WS_CAPTION窗口样式。它完美地运行在Windows XP中。在Windows 10中,一段标题栏仍然被绘制,并且在使用自定义标题栏控件时,它看起来很难看。从Windows窗体(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;
}
}
}
视窗7的屏幕截图(期望的外观和MSDN描述一致):
视窗10的屏幕截图(不期望的外观不一致MSDN说明):
答
什么你正在观察的不是标题栏,而是边框尺寸。
我的问题是什么导致这种情况在Windows 10和Windows 7中呈现这种方式之间的区别?
原因是不同版本的Windows上的外观和感觉实现。
如果您有兴趣即使在Windows 10上如何摆脱尺寸边框:删除WS_THICKFRAME
标志。
或者(也许更优选),您可以将表单的FormBorderStyle
更改为其他值。测试什么最适合你。
但是没有什么东西可以精确地定义整个表单边界。这取决于外观和感觉(主题)。从技术上讲,你不能指望在不同的实现下,表单的边界不会有差异。你只能通过测试来确保。
您正在使用winforms,这是一种过时的表示技术,不可能在以后的Windows版本中以可预测的方式工作。使用WPF。 –
向我展示winforms的MSDN文档被弃用,并将其标记为答案... –
我没有说它被弃用。我刚才说这已经过时了。这是遗产。 –