• 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);

              }

           }

    }

    转载:http://www.csharpwin.com/csharpresource/503.shtml

     



    返回导读目录,阅读更多随笔



    分割线,以下为博客签名:

    软件臭虫情未了
    • 编码一分钟
    • 测试十年功


    随笔如有错误或不恰当之处、为希望不误导他人,望大侠们给予批评指正。

  • 相关阅读:
    构建企业级数据湖?Azure Data Lake Storage Gen2实战体验(中)
    构建企业级数据湖?Azure Data Lake Storage Gen2实战体验(上)
    寻觅Azure上的Athena和BigQuery (二):神奇的PolyBase
    寻觅Azure上的Athena和BigQuery(一):落寞的ADLA
    Azure中国CDN全球覆盖功能初探
    第一次负责项目感悟
    C#读取静态类常量属性和值
    std::thread使用
    C#泛型编程
    C++模板类
  • 原文地址:https://www.cnblogs.com/08shiyan/p/1990203.html
Copyright © 2020-2023  润新知