zoukankan      html  css  js  c++  java
  • 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);
              }
           }
  • 相关阅读:
    C++相关资料
    OpenCV相关资料参考
    QT-undefined reference to vtable
    QToolButton弹出菜单
    QT-信号和槽机制
    了解字符集和编码
    apache配置Directory目录权限的一些配置
    linux用户(组)及文件权限说明
    Linux下重要日志文件及查看方式
    四种常见的 POST 提交数据方式
  • 原文地址:https://www.cnblogs.com/leomon/p/4522107.html
Copyright © 2011-2022 走看看