博客
关于我
(三十一)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/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | 实战 | 使用姿态估计算法构建简单的健身训练辅助应用程序
    查看>>
    OpenCV与AI深度学习 | 实战 | 基于OpenCV和K-Means聚类实现颜色分割(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 基于YoloV5和Mask RCNN实现汽车表面划痕检测(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 基于YOLOv9+SAM实现动态目标检测和分割(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 基于YOLOv9和OpenCV实现车辆跟踪计数(步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 文本图片去水印--同时保持文本原始色彩(附源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 通过微调SegFormer改进车道检测效果(数据集 + 源码)
    查看>>
    OpenCV与AI深度学习 | 实战—使用YOLOv8图像分割实现路面坑洞检测(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战篇——基于YOLOv8和OpenCV实现车速检测(详细步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战|OpenCV实时弯道检测(详细步骤+源码)
    查看>>
    OpenCV与AI深度学习 | 实用技巧 | 使用OpenCV进行模糊检测
    查看>>
    OpenCV与AI深度学习 | 实践教程|旋转目标检测模型-TensorRT 部署(C++)
    查看>>
    OpenCV与AI深度学习 | 工业缺陷检测中数据标注需要注意的几个事项
    查看>>
    OpenCV与AI深度学习 | 干货 | 深度学习模型训练和部署的基本步骤
    查看>>
    OpenCV与AI深度学习 | 手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 水下检测+扩散模型:或成明年CVPR最大惊喜!
    查看>>
    OpenCV与AI深度学习 | 深入浅出了解OCR识别票据原理
    查看>>
    OpenCV与AI深度学习 | 深度学习检测小目标常用方法
    查看>>
    OpenCV与AI深度学习 | 超越YOLOv10/11、RT-DETRv2/3!中科大D-FINE重新定义边界框回归任务
    查看>>
    OpenCV与AI深度学习 | 高效开源的OCR工具:Surya-OCR介绍与使用
    查看>>