在Windows 7中,音量混合器窗口具有特定样式,具有粗糙透明边框,但没有标题栏。如何在winforms窗口中重新创建窗口样式?
我尝试将Text设置为string.Empty,将ControlBox设置为false,这会删除标题栏,但边框也会消失:
答案 0 :(得分:33)
form.Text = string.Empty;
form.ControlBox = false;
form.FormBorderStyle = FormBorderStyle.SizableToolWindow;
对于固定大小的窗口,您仍应使用FormBorderStyle.SizableToolWindow
,但您可以覆盖表单的WndProc
以忽略非客户端命中测试(用于切换到大小调整游标):< / p>
protected override void WndProc(ref Message message)
{
const int WM_NCHITTEST = 0x0084;
if (message.Msg == WM_NCHITTEST)
return;
base.WndProc(ref message);
}
如果您想真正强制执行尺寸,您还可以在表单上将MinimumSize
设置为MaximumSize
。
答案 1 :(得分:1)
因为“此编辑旨在解决帖子的作者,并且作为编辑没有任何意义。它应该被写成评论或答案。”我将克里斯回答的编辑作为一个新答案。
他的答案按照描述运行的代码 - 除了它还可以防止发生任何客户区鼠标事件。您需要返回1(如在HTCLIENT中)来修复它。
protected override void WndProc(ref Message message)
{
const int WM_NCHITTEST = 0x0084;
const int HTCLIENT = 0x01;
if (message.Msg == WM_NCHITTEST)
{
message.Result = new IntPtr(HTCLIENT);
return;
}
base.WndProc(ref message);
}
答案 2 :(得分:-1)
form.FormBorderStyle = FormBorderStyle.Fixed3D;