本文介绍 NumericUpDown 自定义控件 重绘边框 border,如何根据情况重新绘制边框,当用户输入的值无法验证通过时,将边框的颜色设置为红色。提示用户。思路主要是根据值的变化 触发重绘时间,需要重写OnValueChanged 和 OnPaint 方法。
public class NumericUpDownEx : NumericUpDown
{
bool isValid = true;
int[] validValues = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (!isValid)
{
ControlPaint.DrawBorder(e.Graphics, this.ClientRectangle, Color.Red, ButtonBorderStyle.Solid);
}
}
protected override void OnValueChanged(System.EventArgs e)
{
base.OnValueChanged(e);
isValid = validValues.Contains((int)this.Value);
this.Invalidate();
}
}