重写textbox控件的enabled属性,修改enabled=false时字体颜色
网上的方法
protected override void OnPaint(PaintEventArgs args)
{
base.OnPaint(args);
if (!Enabled)
{
args.Graphics.DrawString(Text, Font, new SolidBrush(Color.DimGray), new PointF(0.0F, 0.0F));
}
}
protected override void OnEnabledChanged(EventArgs e)
{
if (Enabled)
{
this.SetStyle(ControlStyles.UserPaint, false);
this.Font = new System.Drawing.Font(Font.FontFamily, Font.Size, Font.Style, Font.Unit);
}
else
{
this.SetStyle(ControlStyles.UserPaint, true);
}
base.OnEnabledChanged(e);
}
有一个问题,我在控件里定义了TextAlign属性为从右向左输入
args.Graphics.DrawString()事件中如何设置字体位置同控件的属性设置一致?
谢谢各位。
[解决办法]
protected override void OnPaint(PaintEventArgs args)
{
base.OnPaint(args);
if (!Enabled)
{
StringFormat TitleFormat = new StringFormat();
if (this.TextAlign == HorizontalAlignment.Center)
{
TitleFormat.Alignment = TitleFormat.LineAlignment = StringAlignment.Center;
}
else if (this.TextAlign == HorizontalAlignment.Right)
{
TitleFormat.Alignment = TitleFormat.LineAlignment = StringAlignment.Far;
}
else
{
TitleFormat.Alignment = TitleFormat.LineAlignment = StringAlignment.Near;
}
args.Graphics.DrawString(Text, Font, new SolidBrush(Color.Red), args.ClipRectangle, TitleFormat);
}
}