TextBox为Disable时字体是灰色的,看起来不清晰,于是简单重绘一下

public class MyTextBox : TextBox
{
new public bool Enabled
{
get { return base.Enabled; }
set
{
this.SetStyle(ControlStyles.UserPaint, !value);
base.Enabled = value;
}
}

protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.FillRectangle(new SolidBrush(Color.LightGray), this.ClientRectangle);
e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), -1, 1);
}
}

但是最近碰到个奇怪的问题,客户在画面上反复设置文本框Enabled属性时,经常会出现字体变大的现象。经过调查,改变控件Style会导致这个问题,必须重置控件的句柄,于是把重写的Enabled属性去掉改成下面这样,问题总算解决了
protected override void OnEnabledChanged(EventArgs e)
{
this.SetStyle(ControlStyles.UserPaint, !this.Enabled);
base.RecreateHandle();
base.OnEnabledChanged(e);
}

Back