gpt4 book ai didi

winforms - 如何覆盖 UserControl 类以绘制自定义边框?

转载 作者:行者123 更新时间:2023-12-01 11:58:26 25 4
gpt4 key购买 nike

我想覆盖 System.Windows.Forms.UserControl 以绘制自定义边框(例如使用自定义颜色)。不可能使用内置类,因为唯一可以影响边框行为的方法/属性是 BorderStyle。

以以下方式(下面的代码)覆盖 OnPaint 不是一个好的解决方案,因为它基本上是在原始边框上绘制另一个边框。

    protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);

if (this.BorderStyle == BorderStyle.FixedSingle)
ControlPaint.DrawBorder(e.Graphics, this.ClientRectangle, Color.LightGray, ButtonBorderStyle.Solid);
}

有谁知道如何在自定义控件中覆盖边框绘制?

出于某些原因,在我的情况下,将此用户控件放入面板不是一个选项。

最佳答案

将 base.BorderStyle 设置为 None 以不绘制默认边框。您需要覆盖 BorderStyle 属性才能完成这项工作。

    public UserControl1() {
InitializeComponent();
base.BorderStyle = BorderStyle.None;
this.BorderStyle = BorderStyle.FixedSingle;
}

private BorderStyle border;

public new BorderStyle BorderStyle {
get { return border; }
set {
border = value;
Invalidate();
}
}

关于winforms - 如何覆盖 UserControl 类以绘制自定义边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3908384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com