方法一:

public partial class WaterTextBox : TextBox{private readonly Label lblwaterText = new Label();public WaterTextBox(){InitializeComponent();lblwaterText.BorderStyle = BorderStyle.None;lblwaterText.Enabled = false;lblwaterText.BackColor = Color.White;lblwaterText.AutoSize = false;lblwaterText.Top = 1;lblwaterText.Left = 0;Controls.Add(lblwaterText);}[Category("扩展属性"), Description("显示的提示信息")]public string WaterText{get { return lblwaterText.Text; }set { lblwaterText.Text = value; }}public override string Text{set{if (value != string.Empty)lblwaterText.Visible = false;elselblwaterText.Visible = true;base.Text = value;}get { return base.Text; }}protected override void OnSizeChanged(EventArgs e){if (Multiline && (ScrollBars == ScrollBars.Vertical || ScrollBars == ScrollBars.Both))lblwaterText.Width = Width - 20;elselblwaterText.Width = Width;lblwaterText.Height = Height - 2;base.OnSizeChanged(e);}protected override void OnEnter(EventArgs e){lblwaterText.Visible = false;base.OnEnter(e);}protected override void OnLeave(EventArgs e){if (base.Text == string.Empty)lblwaterText.Visible = true;base.OnLeave(e);}}

方法二:(待改进)改进点:提示文本是颜色,进入时自动消失,失去焦点后如果没有值又显示提示文本。如果哪位改进好了,可以回给我看看吗?

public partial class WaterTextBox1 : TextBox{private String strEmptyValue = String.Empty;public WaterTextBox1(){InitializeComponent();processDefaultValue();}public String EmptyValue //记录空值的表现{get { return strEmptyValue; }set{if (base.Text == strEmptyValue)base.Text = value.Trim();strEmptyValue = value.Trim();processDefaultValue();}}public override string Text //覆盖Text属性{get { return base.Text.Trim() == strEmptyValue.Trim() ? String.Empty : base.Text.Trim(); }set{base.Text = value;processDefaultValue();}}protected override void OnVisibleChanged(EventArgs e){base.OnVisibleChanged(e);processDefaultValue();}protected override void OnMouseClick(MouseEventArgs e){base.OnMouseClick(e);if (base.Text == strEmptyValue){SelectAll();}}protected override void OnValidating(CancelEventArgs e) //覆盖TextBox验证处理{processDefaultValue();base.OnValidating(e);}private void processDefaultValue() //处理表现空值的方法{base.Text = base.Text.Trim().Length <= 0 ? strEmptyValue : base.Text.Trim();}}

转载于:https://www.cnblogs.com/wangchuang/p/3164863.html

Winform 水印TextBox相关推荐

  1. WinForm -- 为TextBox文本框添加鼠标右键菜单

    WinForm -- 为TextBox文本框添加鼠标右键菜单 1. 新建一个WinForm项目,放置一个TextBox控件 2. 从工具箱拖进来一个ContextMenuStrip 3. 将TextB ...

  2. Winform 中 TextBox 换行问题解析(转)

    winform 中 TextBox 的 Multiline属性设置为 true ,敲入几个字符和几个回车,然后保存到数据库,再从数据库中读取出来赋值给TextBox,换行符丢失.以前遇到这问题,没太在 ...

  3. winform的Textbox设置只读之后使用ForeColor更改颜色

    winform的Textbox设置只读之后设置ForeColor更改颜色无效.这是 TextBox 默认的行为. 解决方法: 设置为只读之后,修改控件的BackColor,再设置ForeColor就可 ...

  4. winform的Textbox设置只读之后ForeColor无效的解决方法

    winform的Textbox设置只读之后ForeColor无效.这是 TextBox 默认的行为. 可以通过以下方法就可以解决: 设置为只读之后,把BackColor改一下,然后运行一下窗口,再设置 ...

  5. winform中textbox设置只能输入数字

    winform中textbox设置只能输入数字 textbox 的keypress事件,通过keychar判断键盘的按键是否为数字或小数点.删除.退格 //判断按键是不是要输入的类型.if (((in ...

  6. WPF 水印 TextBox MaskedTextBox

    设计出来的样子是这个样子的. 注:这是个封装在DLL中的控件,但不影响理解 一.样式字典 - 仅仅定义了基本的骨骼结构 <ResourceDictionary xmlns="http: ...

  7. winform界面TextBox限制只能输入整数

    winform界面TextBox限制只能输入整数 选中需要限制的TextBox ,双击生成的事件 KeyPress 在生成的方法中,写如下代码 if ((e.KeyChar < 48 || e. ...

  8. 重写Winform的Textbox单行模式下滚动条。

    C# Textbox,必须同时设置属性Multiline = True.ScrollBars=Horizontal.WordWrap=False才会显示出水平滚动条,且默认字体大小下,控件的Size. ...

  9. Winform水印工具(文字和图片皆可)

    Winform水印工具(文字和图片皆可) 简介:如题Winform水印工具,原图和水印图都将以缩略图的形式展示在工具上 水印类型/水印内容:文字.图片 水印位置:左上角.右上角.居中.左下角.右下角 ...

最新文章

  1. 每日一皮:当代互联网企业真实写照!
  2. Java集合:Hashtable源码分析
  3. LSMW批处理使用方法(05)_步骤3下
  4. php微信支付分取消订单,微信支付PHP开发教程五关闭订单
  5. C/C++协程实现-学习笔记
  6. 查询排序_MySQL使用UNION连接两个查询排序失效
  7. 【渝粤题库】陕西师范大学202041 国际经济学 作业(专升本)
  8. python代码自动生成器下载_Python代码生成器
  9. LeetCode高效算法刷题模板
  10. python读取txt、csv以及xml文件
  11. 如何做好产品需求设计和开发
  12. OpenCV图像预处理常用函数及流程
  13. Android车载蓝牙相关开发3:蓝牙音频接收器BluetoothA2dpSink
  14. 【禁止套娃】用PPSSPP模拟PSP模拟Neogeo模拟SNK拳皇97
  15. Python ---------列表 集合 字典 深浅拷贝
  16. 不平衡数据分类实证-R语言
  17. 7-65 平面向量加法 (15分)
  18. AtCoder题解 —— AtCoder Beginner Contest 182 —— D - Wandering
  19. nanotime java_为什么NanoTime不能直接比较大小
  20. 时尚圈元宇宙,时尚圈和元宇宙的碰撞会带来怎样的火花?时尚圈元宇宙,时尚圈和元宇宙的碰撞会带来怎样的火花?

热门文章

  1. 安卓手机浏览器_chrome浏览器插件安卓下载-chrome apk手机版下载v4.8.2安卓版
  2. 金银花跟黄芪泡水有什么功效?
  3. 集成灶带给我的是无尽烦恼,大家的集成灶用得如何?
  4. “单于夜遁逃”的上一句诗是什么?这句诗出自哪里?
  5. 微信号承载私域流量的9条心得
  6. 你给客户报完价,客户就没消息了,什么原因呢?
  7. 最近为A公司提炼的经营理念之合作理念
  8. 为了运行内存多两G,多花几百块值不值?
  9. 为什么以前的电视一打雷就容易烧坏,现在的电视就不那么怕雷?
  10. 1045. 快速排序(25)-PAT乙级真题