2
我想重写System.Windows.Forms.UserControl来绘制自定义边框(例如使用自定义颜色)。使用内置类是不可能的,因为可以影响边界行为的唯一方法/属性是BorderStyle。如何重写UserControl类来绘制自定义边框?
重写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);
}
有谁知道如何覆盖自定义控件中的边框绘图?
由于某些原因,将此用户控件放到面板中并不适用于我的情况。
谢谢你,我想出了类似的解决方案。但是不使用BorderStyle类型作为属性,而只使用布尔值(不管是否绘制)。 但是,这并不能解决原始问题:如何不重绘边框,而是覆盖内置功能来绘制我需要的边框。 – 2010-10-11 18:11:27
但要小心。如果您的控件被分配给UserControl变量并且边框属性发生更改,这可能会导致潜在的意外行为。即:'UserControl x = new MyControl(); x.BorderStyle = BorderStyle.Fixed3D;'这会设置'base.Borderstyle',而不是你的'new' BorderStyle属性。 – ricovox 2013-11-27 05:00:17