博客
关于我
(三十一)c#Winform自定义控件-文本框(四)-HZHControls
阅读量:417 次
发布时间:2019-03-06

本文共 2920 字,大约阅读时间需要 9 分钟。

自定义美观文本框控件

随着项目的深入,我一直想为项目开发一套高质量的自定义控件,最终有了这篇关于自定义文本框控件的实现方案。

前提

入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。


GitHub

如果觉得写的还行,请点个 star 支持一下吧


目录

  • 准备工作
  • 开始
  • 属性
  • 事件
  • 用处及效果
  • 最后的话

  • 准备工作

    终于到文本框了,文本框将包含原文本框扩展,透明文本框,数字输入文本框,带边框文本框。本文将讲解带边框文本框,可选弹出键盘样式,继承自控件基类UCControlBase。同时用到了无焦点窗体和键盘,如果你还没有了解,请前往查看。


    开始

    添加用户控件,命名UCTextBoxEx,继承自UCControlBase。

    下面是该控件的主要属性:

    属性

    • 是否显示清理按钮

      public bool IsShowClearBtn  {      get { return m_isShowClearBtn; }      set      {          m_isShowClearBtn = value;          if (value)          {              btnClear.Visible = !(txtInput.Text == "\r\n") && !string.IsNullOrEmpty(txtInput.Text);          }          else          {              btnClear.Visible = false;          }      }  }
    • 是否显示查询按钮

      public bool IsShowSearchBtn  {      get { return m_isShowSearchBtn; }      set      {          m_isShowSearchBtn = value;          btnSearch.Visible = value;      }  }
    • 键盘打开样式

      public KeyBoardType KeyBoardType  {      get { return keyBoardType; }      set { keyBoardType = value; }  }
    • 字体

      public new Font Font  {      get { return this.txtInput.Font; }      set { this.txtInput.Font = value; }  }
    • 输入类型

      public TextInputType InputType  {      get { return txtInput.InputType; }      set { txtInput.InputType = value; }  }
    • 水印文字

      public string PromptText  {      get { return this.txtInput.PromptText; }      set { this.txtInput.PromptText = value; }  }
    • 水印字体

      public Font PromptFont  {      get { return this.txtInput.PromptFont; }      set { this.txtInput.PromptFont = value; }  }
    • 水印颜色

      public Color PromptColor  {      get { return this.txtInput.PromptColor; }      set { this.txtInput.PromptColor = value; }  }
    • 正则表达式

      public string RegexPattern  {      get { return this.txtInput.RegexPattern; }      set { this.txtInput.RegexPattern = value; }  }
    • 最大值

      public decimal MaxValue  {      get { return this.txtInput.MaxValue; }      set { this.txtInput.MaxValue = value; }  }
    • 最小值

      public decimal MinValue  {      get { return this.txtInput.MinValue; }      set { this.txtInput.MinValue = value; }  }
    • 小数位数

      public int DecLength  {      get { return this.txtInput.DecLength; }      set { this.txtInput.DecLength = value; }  }

    事件

    • 文本改变事件

      public new event EventHandler TextChanged  {      add: TextChanged += new EventHandler(TextChangedHandler);      remove: TextChanged -= new EventHandler(TextChangedHandler);  }
    • 键盘按钮点击事件

      public event EventHandler KeyboardClick  {      add: KeyboardClick += new EventHandler(KeyboardClickHandler);      remove: KeyboardClick -= new EventHandler(KeyboardClickHandler);  }
    • 查询按钮点击事件

      public event EventHandler SearchClick  {      add: SearchClick += new EventHandler(SearchClickHandler);      remove: SearchClick -= new EventHandler(SearchClickHandler);  }

    用处及效果

    这套文本框控件具有以下功能:

  • 清理按钮:支持清除文本框内容。
  • 查询按钮:触发搜索点击事件。
  • 弹出键盘:支持多种键盘样式,包括标准键盘、数字键盘和手写键盘。
  • 水印效果:支持自定义水印文字、字体和颜色。
  • 正则表达式验证:支持通过正则表达式限制输入格式。
  • 最大值和最小值限制:适用于数字输入场景。
  • 焦点变色:支持根据设置改变焦点时的背景颜色。

  • 最后的话

    如果你觉得这篇文章写得还行,请点个 star 支持一下吧。

    欢迎前来交流探讨:

    • GitHub:
    • 代码云:
    • 企鹅群:568015492

    转载地址:http://hfvkz.baihongyu.com/

    你可能感兴趣的文章
    OpenObserve云原生可观测平台本地Docker部署与远程访问实战教程
    查看>>
    OpenPPL PPQ量化(4):计算图的切分和调度 源码剖析
    查看>>
    OpenPPL PPQ量化(5):执行引擎 源码剖析
    查看>>
    openpyxl 模块的使用
    查看>>
    Openresty框架入门详解
    查看>>
    OpenResty(2):OpenResty开发环境搭建
    查看>>
    openshift搭建Istio企业级实战
    查看>>
    Openstack 之 网络设置静态IP地址
    查看>>
    OpenStack 综合服务详解
    查看>>
    OpenStack 网络服务Neutron详解
    查看>>
    Openstack(两控制节点+四计算节点)-1
    查看>>
    openstack下service和endpoint
    查看>>
    Openstack企业级云计算实战第二、三期培训即将开始
    查看>>
    OpenStack创建虚拟机实例实战
    查看>>
    OpenStack安装部署实战
    查看>>
    OpenStack架构
    查看>>
    OpenStack版本升级与故障排查实战
    查看>>
    OpenStack的基本概念与架构详解
    查看>>
    Openstack的视频学习
    查看>>
    openstack虚拟机迁移live-migration中libvirt配置
    查看>>