如何创建带边框的表单,但没有标题栏?(比如Windows 7上的音量控制)

oɔɯ*_*ɯǝɹ 24 .net c# windows-7 winforms windows-style-flags

在Windows 7中,音量混合器窗口具有特定样式,具有粗糙透明边框,但没有标题栏.如何在winforms窗口中重新创建窗口样式?

体积混合器

我尝试将Text设置为string.Empty,将ControlBox设置为false,这将删除标题栏,但边框也会消失:

边界消失了

Chr*_*ich 33

form.Text = string.Empty;
form.ControlBox = false;
form.FormBorderStyle = FormBorderStyle.SizableToolWindow;
Run Code Online (Sandbox Code Playgroud)

对于固定大小的窗口,您仍然应该使用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);
}
Run Code Online (Sandbox Code Playgroud)

如果你想真正强制执行大小,你也可以在表单上设置MinimumSize相等MaximumSize.