【发布时间】:2010-08-11 20:36:35
【问题描述】:
我知道如何删除表单的边框,但我只是想删除标题。谷歌搜索 P/Invokes 并没有给我太多结果,所以我想知道,我怎样才能获得这样的结果?
【问题讨论】:
标签: c# .net window border aero
我知道如何删除表单的边框,但我只是想删除标题。谷歌搜索 P/Invokes 并没有给我太多结果,所以我想知道,我怎样才能获得这样的结果?
【问题讨论】:
标签: c# .net window border aero
来自非托管开发,我会 P/Invoke {Get/Set}WindowLong 等 - 这是我最初的回应 - 但有一种托管方式来处理这个问题。
您需要覆盖表单中的 CreateParams 属性,移除边框样式并添加粗框样式,如下所示:
...
const UInt32 WS_THICKFRAME = 0x40000;
const UInt32 WS_BORDER = 0x800000;
...
protected override CreateParams CreateParams
{
get
{
CreateParams p = base.CreateParams;
p.Style |= WS_THICKFRAME;
p.Style &= ~WS_BORDER;
return p;
}
}
推荐阅读清单
窗口样式 http://msdn.microsoft.com/en-us/library/ms632600%28VS.85%29.aspx
Form::CreateParams 属性 http://msdn.microsoft.com/en-us/library/system.windows.forms.form.createparams.aspx
【讨论】:
我现在没有VS,所以不能给你确切的答案,抱歉。
在窗口的属性窗格中查找边框样式,其中之一将允许您设置一个类似的:)
编辑: 我知道我遗漏了一些东西...首先,查找属性“ControlBox”、“MaximizeBox”和“MinimizeBox”并将它们设置为 false,然后在“FormBorderStyle”属性中选择一个相当大的选项 - 是的,它看起来不像图片中的那个也是固定大小的,至少没有 PinVoke AFAIK-。
还记得将“文本”属性留空。
希望这会有所帮助:)
【讨论】: