c# - 如何创建一个有边框但没有标题栏的表单? (如 Windows 7 上的音量控制)

标签 c# .net winforms windows-7 windows-style-flags

在 Windows 7 中,音量混合器窗口具有特定的样式,带有厚而透明的边框,但没有标题栏。我如何在 winforms 窗口中重新创建该窗口样式?

volume mixer

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

border disappears

最佳答案

form.Text = string.Empty;
form.ControlBox = false;
form.FormBorderStyle = FormBorderStyle.SizableToolWindow;

对于固定大小的窗口,您仍应使用 FormBorderStyle.SizableToolWindow,但您可以覆盖窗体的 WndProc 以忽略非客户端 HitTest (用于切换到尺寸游标):

protected override void WndProc(ref Message message)
{
    const int WM_NCHITTEST = 0x0084;

    if (message.Msg == WM_NCHITTEST)
        return;

    base.WndProc(ref message);
}

如果你想真正强制尺寸,你也可以在表单上设置 MinimumSize 等于 MaximumSize

关于c# - 如何创建一个有边框但没有标题栏的表单? (如 Windows 7 上的音量控制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3594086/

相关文章:

c# - 如何从 DataView 中的列获取值?

c# - 构建动态 where 子句,Linq To Sql

c# - 在 C# 中获取特定服务的 CPU 使用率

.net - WebClient 抛出异常前如何响应 StatusCode

c# - 将表格移动到特定屏幕

c# - 分析重复序列

c# - 处理时区的工作流程建议

c# - 每 n 秒调用一次存储过程

c# - 部署 Windows 窗体应用程序时要采取的步骤?

c# - 如何将 ironpython 控制台插入到我的表单中?