C# WINFORM TEXTBOX水印效果

C# WinForm 给TextBox 加水印

在一些软件中,我们看到当一个输入控件(TextBox)没有输入而且没有焦点的时候,会显示一些提示信息,网上有一些介绍用复合控件来实现,其实我们直接继承TextBox控件也很容易实现。

下面就介绍怎样来实现这个控件。

第一步:我们建一个继承 TextBox 的类,命名为WatermakTextBox

第二步:给这个类添加两个属性,一个是EmptyTextTip,就是当控件没有输入内容和没有焦点的时候显示的提示文本,也就是水印了;另一个是EmptyTextTipColor,就是提示文本的颜色。

第三步:也就是最重要的一步,就是重写WndProc 函数,截取WM_PAINT消息,当没有输入内容和输入焦点时,重绘TextBox,看下面的代码:

protected override void WndProc(ref Message m)

{

    base.WndProc(ref m);

    if (m.Msg == WM_PAINT)

    {

        WmPaint(ref m);

    }

}

private void WmPaint(ref Message m)

{

    Rectangle rectangle = new Rectangle(0, 0, Width, Height);

    using (Graphics graphics = Graphics.FromHwnd(base.Handle))

    {

        if (Text.Length == 0

           && !string.IsNullOrEmpty(_emptyTextTip)

           && !Focused)

        {

           TextFormatFlags format =

                TextFormatFlags.EndEllipsis |

                TextFormatFlags.VerticalCenter;

            if (RightToLeft == RightToLeft.Yes)

            {

                format |= TextFormatFlags.RightToLeft | TextFormatFlags.Right;

            }

            TextRenderer.DrawText(

                graphics,

                _emptyTextTip,

                Font,

                base.ClientRectangle,

                _emptyTextTipColor,

                  format);

          }

      }

}

    现在我们就实现了给TextBox加水印了,来看看效果吧

原创地址:http://lxylmhui.blog.163.com/blog/static/4365006820096258253941/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值