C# 撤消我用ControlPaint.DrawBorder()创建的边框
我正在Windows窗体C#上工作 当最大化时,我创建的边界将成为问题C# 撤消我用ControlPaint.DrawBorder()创建的边框,c#,winforms,C#,Winforms,我正在Windows窗体C#上工作 当最大化时,我创建的边界将成为问题 private void App_Paint(object sender, PaintEventArgs e) { ControlPaint.DrawBorder(e.Graphics, ClientRectangle, Color.Crimson, ButtonBorderStyle.Solid); } 正常: 最大化: 我做错什么了吗 有更好的方法吗?根据提供的信息,我看了两遍,这意
private void App_Paint(object sender, PaintEventArgs e)
{
ControlPaint.DrawBorder(e.Graphics, ClientRectangle, Color.Crimson, ButtonBorderStyle.Solid);
}
正常:
最大化:
我做错什么了吗
有更好的方法吗?根据提供的信息,我看了两遍,这意味着从上一个实例中保留了绘制的信息(相对于表单的位置) 我强烈建议不要试图粉刷非客户区 如果您有这样的自定义请求,请使用FormBorderStyle.None创建表单。然后,使用自定义事件绘制拆分容器的边框。顶部面板将具有自定义的最小/最大按钮。其余内容应位于“最小/最大”按钮下方的下面板中 远离非客户绘画。这件事太麻烦了。我自己做的:D 1) 创建一个按钮,将其FlatStyle设置为flat 2) 将“启用属性”设置为false,同时删除所有文本 3) 停靠按钮以填充 4) 如果上一个按钮、标签(控件)因按钮而隐藏,请右键单击该按钮,将其发送回
DrawBorder()
有一个参数可用于删除以前绘制的边框,只需将buttonorderstyle
设置为None
例如:
ControlPaint.DrawBorder(e.Graphics, (sender as Control).ClientRectangle, Color.Red, ButtonBorderStyle.None);
我唯一不喜欢这种方法的地方是,它需要调用Paint
事件,这可能会变慢
请参见在运行时刷新表单认真地说,您想让我们调试一张图片吗?谢谢,我将遵循规则完成余下的编码过程。