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