方法一:

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;
else
lblwaterText.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;
else
lblwaterText.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();
}
}

Winform 水印TextBox的更多相关文章

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

    winform的Textbox设置只读之后ForeColor无效. 通过以下方法就可以解决: 设置为只读之后,把BackColor改一下,然后运行一下窗口,再设置ForeColor就没问题了. tbT ...

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

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

  3. Winform给TextBox设置默认值

    Winform给TextBox设置默认值(获取焦点后默认值消失) 主要是通过TextBox的获取焦点Enter和失去焦点Leave两个事件来实现的, 思路如下: 1.设置一个字符串常量,作为TextB ...

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

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

  5. [WinForm]为TextBox设置水印文字

    关键代码: using System; using System.Runtime.InteropServices; using System.Windows.Forms; namespace WinF ...

  6. winform的水印TextBox

    public partial class WaterTextBox : TextBox { private readonly Label lblwaterText = new Label(); pub ...

  7. Winform水印

    本文实例展示了WinForm实现为TextBox设置水印文字功能,非常实用的技巧,分享给大家供大家参考. 关键代码如下 using System; using System.Runtime.Inter ...

  8. WinForm自定义控件–TextBox扩展

      一.简单回顾 在前两节中,对Panel和GroupBox控件进行了相关的扩展应用,主要都是设置控件的边框以及边框颜色等.本节,继续对WinForm现有的控件TextBox进行扩展,来满足实际开发中 ...

  9. windows phone 水印TextBox

    原文来自:wp教程网 原理:在失去焦点和获取焦点的时候,判断Text值是否为空或者是否与水印值相同,然后修改TextBox中的Text和Foreground. 代码如下: /* =========== ...

随机推荐

  1. 【转】STL空间配置器

    STL空间配置器(allocator)在所有容器内部默默工作,负责空间的配置和回收.STL标准为空间配置器定义了标准接口(可见<STL源码剖析>P43).而具体实现细节则由各编译器实现版本 ...

  2. CF 577B Modulo Sum

    题意:给一个长度为n的正整数序列,问能不能找到一个不连续的子序列的和可以被m整除. 解法:抽屉原理+dp.首先当m<n时一定是有答案的,因为根据抽屉原理,当得到这个序列的n个前缀和%m时,一定会 ...

  3. hdu3231 (三重拓扑排序) 2009 Asia Wuhan Regional Contest Hosted by Wuhan University

    这道题算是我拓扑排序入门的收棺题了,卡了我好几天,期间分别犯了超时,内存溢出,理解WA,细节WA,格式WA…… 题目的意思大概是在一个三维坐标系中,有一大堆矩形,这些矩形的每条棱都与坐标轴平行. 这些 ...

  4. [Everyday Mathematics]20150111

    设 $n$ 阶方阵 $A=(\al_1,\cdots,\al_n)$ 非奇异, $B=(0,\al_2,\cdots,\al_n)$. 试证: $BA^{-1}$, $A^{-1}B$ 的秩均为 $n ...

  5. 网页抓取:PHP实现网页爬虫方式小结

    来源:http://www.ido321.com/1158.html 抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐.LZ总结了几种常用的.易于实现 ...

  6. bzoj 3091 城市旅行(LCT+数学分析)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3091 [思路] 膜Popoqqq大爷的题解 click here [代码]是坑... ...

  7. mybatis系列-09-订单商品数据模型

    9.1     数据模型分析思路 1.每张表记录的数据内容 分模块对每张表记录的内容进行熟悉,相当 于你学习系统 需求(功能)的过程. 2.每张表重要的字段设置 非空字段.外键字段 3.数据库级别表与 ...

  8. android判断当前网络状态及跳转到设置界面

    今天,想做这个跳转到网络设置界面, 刚开始用 intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS); 不料老是出现settings.Wirele ...

  9. [HIve - LanguageManual] Hive Operators and User-Defined Functions (UDFs)

    Hive Operators and User-Defined Functions (UDFs) Hive Operators and User-Defined Functions (UDFs) Bu ...

  10. mysql 查看锁表解锁

    -- 查看那些表锁到了show OPEN TABLES where In_use > 0;-- 查看进程号show processlist;--删除进程 kill 42236: