日期:2014-05-17  浏览次数:20969 次

重写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)
             &