我想覆盖 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/