- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将 winform 显示为对话框(在主窗口上使用 ShowDialog)。因此,我将 FormBorderStyle 设置为 None,因为我既不想要控制框也不想要标题栏。虽然,我想画一个边框(例如像普通窗口一样的蓝色边框)并保持 move 表单的能力。我不需要调整它大小的能力。我试图通过覆盖 OnPaint 来绘制边框,但它从未被调用过。这是我的代码:
protected override void OnPaint (PaintEventArgs e)
{
base.OnPaint (e);
int borderWidth = 2;
Color borderColor = Color.Blue;
ControlPaint.DrawBorder (e.Graphics, e.ClipRectangle, borderColor,
borderWidth, ButtonBorderStyle.Solid, borderColor, borderWidth,
ButtonBorderStyle.Solid, borderColor, borderWidth, ButtonBorderStyle.Solid,
borderColor, borderWidth, ButtonBorderStyle.Solid);
}
如有任何帮助,我们将不胜感激。
最佳答案
Paint
方法在这里是错误的,因为它不绘制表单的所谓非客户区,例如边框和标题栏。
要隐藏标题栏,您需要将 ControlBox
属性设置为 false
并清除表单的 Text
属性。将边框设置为 FixedDialog
以使表单无法调整大小。
要保留在没有标题栏的情况下 move 窗体的能力,您需要覆盖 WndProc
。
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 0x84: m.Result = new IntPtr(0x2);
return;
}
base.WndProc(ref m);
}
基本上这是处理 WM_NCHITTEST 消息和作弊的标准方式,说 - 鼠标光标在窗口的标题上 [返回值 0x2],因此即使您在客户区中单击并拖动它。
关于c# - 当 FormBorderStyle 设置为 None 时,winforms 绘制边框并 move ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4013231/
我有一个无边框表单(FormBorderStyle = None),高度为 23 像素(在设计器中设置) 当 .NET 在运行时绘制我的表单时 - 它绘制它 38 像素高(由于某种原因,它增加了标题栏
我喜欢在 C# 中让我的表单无边框。所以我使用了这段代码: FormBorderStyle = FormBorderStyle.None; 但它消除了 windows 8 的 aero 效果。窗体突然
在 WindowsCE 平台(自定义构建)上,我们的 C# gui 使用常规形式来显示“弹出菜单”。我们将 FormBorderstyle 设置为 None 因为我们不希望表单控件可见。 一些客户在一
我有一个使用 FormBorderStyle 设置为“无”的表单的应用程序。 问题在于,如果用户点击“显示桌面”按钮(有效地最小化所有打开的窗口),然后从任务栏恢复其中一个表单,所有无边框表单都将恢复
令我恼火的是,我 promise 会提供一个用户无法调整大小的固定窗口,但他们当然可以双击标题栏来最大化这个“不可调整大小”的窗口。我怎样才能关闭它?我可以使用 winforms 代码来完成,还是必须
我有一个表单,其属性 FormBorderStyle 设置为“无”,并在顶部有一个用于拖动和按钮的自定义栏。 现在我想给表单一个边框,因为它是一个子表单,并且父表单与子表单具有相同的背景颜色,因此很难
我有一个 Windows 窗体项目的问题,我只能在 Windows 10 机器上重现它(在 Windows 7 上它确实有效)。我认为我可以隔离问题的根源,也就是说,如果我打开双缓冲并将 FormBo
这个问题在这里已经有了答案: Make a borderless form movable? (20 个答案) Winforms - Click/drag anywhere in the form
我将 winform 显示为对话框(在主窗口上使用 ShowDialog)。因此,我将 FormBorderStyle 设置为 None,因为我既不想要控制框也不想要标题栏。虽然,我想画一个边框(例如
我是一名优秀的程序员,十分优秀!