【转】C#: 带有背景文本的TextBox
来源:互联网 发布:数控车床g73编程实例 编辑:程序博客网 时间:2024/04/30 07:28
原文:http://blog.163.com/chs1987@126/blog/static/68709178201110148542833/
我们经常会看到带有背景文本的TextBox,当焦点不在TextBox上时,显示背景文本,而当获得焦点时隐藏背景文本,例如Windows的登录是用户名的输入框。于是,就想自己做一个,结果发现其实很简单,只需继承TextBox,添加一个BackGroundText属性,并重载WM_PAINT消息处理函数即可。
废话不多说,直接上代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace ControlLib
{
public class TextBoxEx : TextBox
{
private const int WM_PAINT = 0x000F;
private string backGroundText = "";
[Description("BackGround Text")]
public string BackGroundText
{
get { return backGroundText; }
set { backGroundText = value; }
}
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == WM_PAINT)
{
using (Graphics g = CreateGraphics())
{
if (string.IsNullOrEmpty(Text) && !Focused)
{
SizeF size = g.MeasureString(backGroundText, Font);
//draw background text
g.DrawString(backGroundText, Font, Brushes.LightGray, new PointF(0, (Height - size.Height) / 2));
}
}
}
}
}
}
其实,还可以用这种方法在背景文本前面加上图标,再美化一下就可以做出和Win7系统登录界面上的文本框一样的效果
- 【转】C#: 带有背景文本的TextBox
- C#: 带有背景文本的TextBox
- C#: 带有背景文本的TextBox
- 带有小计算器的TextBox控件[转]
- C#TextBox 清除文本内容
- C#Winform限制TextBox文本框只能输入文本的格式
- C语言完整读取带有回车的文本。
- 带有小计算器的TextBox控件(原创)
- 带有提示文字的Textbox和PasswordBox
- cocos2d创建带有背景颜色的layer
- 驗証TextBox輸入的文本
- 在C# 中 textbox 文本的转换
- 带有可改文本的进度条
- 移动开发----自定义带有字体的文本
- 纯文本用textbox,带格式的文本用richtextbox
- C#:TextBox换行、设置光标位置、随文本滚动
- C#:TextBox换行、设置光标位置、随文本滚动
- VS2013 C++/ Winform textBox 读txt文本 显示多行
- Bash shell 的算术运算有四种方式
- android 录像
- 在Eclipse如何引入library project
- js获取Url,域名,端口号等
- Android 进度条的使用
- 【转】C#: 带有背景文本的TextBox
- 图的邻接表实现迪杰斯特拉算法求最短路径
- Storm集群安装部署步骤【详细版】
- POJ3311 Hie with the Pie(状态压缩dp)
- android开发 java.lang.VerifyError:错误
- struts2的验证码及利用jquery发送ajax请求并利用json做数据交换
- 设计模式之策略模式(Strategy)
- 解决Fedora登陆时笔记本上亮度最低
- linq To DataTable 实现Group by 多个栏位