Nik*_* G. 3 custom-controls winforms
我想覆盖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);
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何在自定义控件中覆盖边框绘图?
出于某些原因,将此用户控件放入面板不是我的选择.
将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();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7439 次 |
最近记录: |