WinForm控件美化扩展系列之给TextBox加水印
2013-01-18 11:21
405 查看
WinForm控件美化扩展系列之给TextBox加水印
来自:http://www.csharpwin.com/csharpresource/503.shtml在一些软件中,我们看到当一个输入控件(TextBox)没有输入而且没有焦点的时候,会显示一些提示信息,网上有一些介绍用复合控件来实现,其实我们直接继承TextBox控件也很容易实现。
下面就介绍怎样来实现这个控件。
第一步:我们建一个继承 TextBox 的类,命名为WatermakTextBox。
第二步:给这个类添加两个属性,一个是EmptyTextTip,就是当控件没有输入内容和没有焦点的时候显示的提示文本,也就是水印了;另一个是EmptyTextTipColor,就是提示文本的颜色。
第三步:也就是最重要的一步,就是重写WndProc 函数,截取WM_PAINT消息,当没有输入内容和输入焦点时,重绘TextBox,看下面的代码:
protected override void WndProc(ref Message m) { base.WndProc(ref m); if (m.Msg == WM_PAINT) { WmPaint(ref m); } } private void WmPaint(ref Message m) { Rectangle rectangle = new Rectangle(0, 0, Width, Height); using (Graphics graphics = Graphics.FromHwnd(base.Handle)) { if (Text.Length == 0 && !string.IsNullOrEmpty(_emptyTextTip) && !Focused) { TextFormatFlags format = TextFormatFlags.EndEllipsis | TextFormatFlags.VerticalCenter; if (RightToLeft == RightToLeft.Yes) { format |= TextFormatFlags.RightToLeft | TextFormatFlags.Right; } TextRenderer.DrawText( graphics, _emptyTextTip, Font, base.ClientRectangle, _emptyTextTipColor, format); } } }
现在我们就实现了给TextBox加水印了,来看看效果吧
相关文章推荐
- C# WinForm控件美化扩展系列之给TextBox加水印
- C# WinForm控件美化扩展系列之ListBox
- C# C# WinForm控件美化扩展系列之ImageComboBox
- C# WinForm控件美化扩展系列之TabControl控件(1)
- C# WinForm控件美化扩展系列之ListView(2)
- C# WinForm控件美化扩展系列之ListView
- C# WinForm控件美化扩展系列之ImageComboBox_C# 视角_CS程序员之窗
- C# WinForm控件美化扩展系列之ListBox
- C# WinForm控件美化扩展系列之TabControl控件(3)-完整版
- C# WinForm控件美化扩展系列之ImageComboBox_C# 视角_CS程序员之窗
- C# WinForm控件美化扩展系列之ListView
- ASP.NET学习系列(五)开始控件之旅之TextBox及其Ajax扩展控件
- Bing Maps进阶系列五:通过DeepEarth的MiniMap控件为Bing Maps扩展迷你小地图
- WinForm TextBox自定义扩展方法数据验证
- MVC为Html对象建立一个扩展方法,使用自己的控件就像使用TextBox一样方便
- C# WinForm 控件美化之改变ListView Head 的背景色
- Winform - 判断GroupBox控件中的TextBox文本框是不是为空
- [ASP][扩展控件开发]控制输入数字型的TEXTBOX开发笔记 (一)--功能目标
- C# winform textbox 水印效果
- C#之WinForm基础 textbox控件变高,由单行输入改为多行输入