Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 撤消我用ControlPaint.DrawBorder()创建的边框_C#_Winforms - Fatal编程技术网

C# 撤消我用ControlPaint.DrawBorder()创建的边框

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); } 正常: 最大化: 我做错什么了吗 有更好的方法吗?根据提供的信息,我看了两遍,这意

我正在Windows窗体C#上工作

当最大化时,我创建的边界将成为问题

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
事件,这可能会变慢


请参见在运行时刷新表单

认真地说,您想让我们调试一张图片吗?谢谢,我将遵循规则完成余下的编码过程。