Winform 水印TextBox
方法一:
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的更多相关文章
- winform的Textbox设置只读之后ForeColor无效的解决方法
winform的Textbox设置只读之后ForeColor无效. 通过以下方法就可以解决: 设置为只读之后,把BackColor改一下,然后运行一下窗口,再设置ForeColor就没问题了. tbT ...
- WinForm -- 为TextBox文本框添加鼠标右键菜单
WinForm -- 为TextBox文本框添加鼠标右键菜单 1. 新建一个WinForm项目,放置一个TextBox控件 2. 从工具箱拖进来一个ContextMenuStrip 3. 将TextB ...
- Winform给TextBox设置默认值
Winform给TextBox设置默认值(获取焦点后默认值消失) 主要是通过TextBox的获取焦点Enter和失去焦点Leave两个事件来实现的, 思路如下: 1.设置一个字符串常量,作为TextB ...
- winform的Textbox设置只读之后使用ForeColor更改颜色
winform的Textbox设置只读之后设置ForeColor更改颜色无效.这是 TextBox 默认的行为. 解决方法:设置为只读之后,修改控件的BackColor,再设置ForeColor就可以 ...
- [WinForm]为TextBox设置水印文字
关键代码: using System; using System.Runtime.InteropServices; using System.Windows.Forms; namespace WinF ...
- winform的水印TextBox
public partial class WaterTextBox : TextBox { private readonly Label lblwaterText = new Label(); pub ...
- Winform水印
本文实例展示了WinForm实现为TextBox设置水印文字功能,非常实用的技巧,分享给大家供大家参考. 关键代码如下 using System; using System.Runtime.Inter ...
- WinForm自定义控件–TextBox扩展
一.简单回顾 在前两节中,对Panel和GroupBox控件进行了相关的扩展应用,主要都是设置控件的边框以及边框颜色等.本节,继续对WinForm现有的控件TextBox进行扩展,来满足实际开发中 ...
- windows phone 水印TextBox
原文来自:wp教程网 原理:在失去焦点和获取焦点的时候,判断Text值是否为空或者是否与水印值相同,然后修改TextBox中的Text和Foreground. 代码如下: /* =========== ...
随机推荐
- Android:实现一种浮动选择菜单的效果
总结如何实现Android浮动层,主要是dialog的使用. 自定义一个类继承自Dialog类,然后在构造方法中,定义这个dialog的布局和一些初始化信息. 案例1: public class Me ...
- Front-End-Develop-Guide
这份文件包含一系列用于面试审查求职者(候选人)的前端面试问题.这并不推荐把每个问题都问在同一个求职者(因为这会花几个小时的时间).从列表中抽取一些问题能够帮助你审查你需要求职者具备的一些技能. 注: ...
- .NET开发工具
1.Two monitors 2.Visual Studio 3.TestDriven.NET 4.JetBrains ReSharper 5.VS样式 https://studiostyl.es/
- bzoj 2134 单选错位(期望)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2134 [题意] ai与ai+1相等得1分,求期望. [思路] 每个题的期望都是独立的. ...
- adb常用命令介绍
adb connect 命令格式:adb connect <host>[:<port>] 作用:connect to a device via TCP/IP,Port 5555 ...
- 第二百八十天 how can I 坚持
今天发现一只大bug,目前还没有解决掉... 晚上和徐斌还有他同学一块吃了个饭.还有.没了. 今天想早睡觉. 今天股市暴跌,二度熔断,好精彩,哈哈,不说啥了,还有苹果股票和谷歌市值越来越接近了,要走下 ...
- PHP网站简单架构 – 单独跑php-fpm
这个架构比较简单,不做过多的说明 前端1台Nginx:负载均衡+nfs 中间2台php:php-fpm 后端1台数据库:MySQL 安装略,参考<lnmp最新源码一键安装包> 192.16 ...
- Oracle的回收站和闪回查询机制(二)
上一篇中讲诉了Oracle中一些闪回查询(Flashback Query),这是利用回滚段信息来恢复一个或一些表到以前的一个时间点(一个快照).要注意的是,Flashback Query仅仅是查询以前 ...
- POJ 1502 MPI Maelstrom(最短路)
MPI Maelstrom Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4017 Accepted: 2412 Des ...
- rop框架中@ServiceMethod注解属性
@ServiceMethod 属性 method :代码服务方法名version :表 示 版 本 号 group:服务分组名.服务的分组没有特殊的意义,您可以为服务定义一个分组,以便在事件监听器.服 ...