在 Visual C# 中,怎样为 TextBox 控件添加水印文字
来源:互联网 发布:网络游戏排行榜 知乎 编辑:程序博客网 时间:2024/05/01 23:51
http://www.zhimengzhe.com/windows/31513.html
在使用 C# 的 TextBox 控件时,有时候会有以下需求:在用户没有输入文字时,TextBox 有文字提示,如下图。
但是 C# 自带的 TextBox 控件貌似没有这个属性,于是 Google 之。终于在这篇文章《Watermarked TextBox in Windows Forms on .NET》中找到了答案。
下面将一步步为大家介绍如何实现此功能。
1、创建一个测试项目 打开 VS 2015,在 File 菜单中,选择 New -> Project… 来打开 New Project 对话框。 选择 Visual C# -> Windows Forms Application。 在 Name 框中键入 Test。 点击 OK 按钮。 创建继承控件这一小节的内容可以参考 MSDN 的《演练:使用 Visual C# 从 Windows 窗体控件继承》。
使用 Visual C# 可以通过继承创建功能强大的自定义控件。通过继承,可以创建不仅保留了标准 Windows 窗体控件的所有内在功能,而且还包含自定义功能的控件。在本文中,将创建一个名为 WatermarkTextBox 的简单继承控件。此控件将继承标准 Windows 窗体 TextBox 控件的功能,并实现文章开头提到的水印文字功能。
2、打开前面已创建好的 Test 项目。 在 Solution Explorer 中右击 Test,选择 Add -> User Control…。 在打开的 Add New Item 对话框中,在 WatermarkTextBox.cs 框中键入 Test。然后点击 Add 按钮。 在 Solution Explorer 中右击 WatermarkTextBox.cs,再选择 View Code。 找到 class 语句行public partial class WatermarkTextBox : UserControl
,并将此控件的继承类型从 UserControl 改成 TextBox。这允许我们所继承的控件继承 TextBox 控件的所有功能。 在 Solution Explorer 中打开 WatermarkTextBox.cs 节点,以显示设计器生成的代码文件 WatermarkTextBox.Designer.cs。右击此文件并选择 View Code。 找到 InitializeComponent
方法并删除分配 AutoScaleMode
属性的行(即删除:this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
)。 TextBox 控件中没有此属性。 选择 Save All 保存项目。 在 Solution Explorer 中右击 Test,选择 Build 编译项目。 在 Solution Explorer 中双击 Form1.cs。此时,在左边的 Toolbox 中就可以看到我们新添加的 WatermarkTextBox 控件了。3、为继承控件添加水印文字功能这部分内容即可参考文章开头的《Watermarked TextBox in Windows Forms on .NET》一文。文章提到的方法是通过 SendMessage
发送 EM_SETCUEBANNER 消息,即可达到添加水印文字的效果。具体方法如下:
using System.Runtime.InteropServices;
按照下面的代码段修改 WatermarkTextBox.cs 的代码即可。<code class=" hljs cs" style="box-sizing: border-box; margin: 0px auto; font-family: Menlo, Monaco, Consolas, "Courier New", monospace;font-size:undefined; padding: 0px; color: inherit; border-radius: 0px; white-space: pre-wrap; background-color: transparent;">namespace Test{ public partial class WatermarkTextBox : TextBox { public WatermarkTextBox() { InitializeComponent(); } private const uint ECM_FIRST = 0x1500; private const uint EM_SETCUEBANNER = ECM_FIRST + 1; [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, uint wParam, [MarshalAs(UnmanagedType.LPWStr)] string lParam); private string watermarkText; public string WatermarkText { get { return watermarkText; } set { watermarkText = value; SetWatermark(watermarkText); } } private void SetWatermark(string watermarkText) { SendMessage(this.Handle, EM_SETCUEBANNER, 0, watermarkText); } }}</code>调用继承控件 在 Solution Explorer 中右击 Test,选择 Rebuild 编译项目。将刚才添加的功能重新编译进继承控件。 在 Solution Explorer 中双击 Form1.cs。 在左边的 Toolbox 中选择 WatermarkTextBox 控件,并将其拉到 Form1 中。 在控件属性 Properties 窗口中,我们可以找到上一节给 WatermarkTextBox 控件添加的 WatermarkText 属性。只要在该属性中输入你想要的水印文字,即可达到如下的效果。
这样就大功告成啦!
以上就是在 Visual C# 中,怎样为 TextBox 控件添加水印文字的全文介绍,希望对您学习Windows的使用有所帮助. 0 0
- 在 Visual C# 中,怎样为 TextBox 控件添加水印文字
- 在 Visual C# 中,如何为 TextBox 控件添加水印文字
- 为textbox控件添加水印
- 給TEXTBOX添加文字水印
- jQuery为控件添加水印文字
- C# 解决为TextBox后台动态添加水印的问题
- c# 使用Graphic 为图片添加水印 及文字
- C# 添加文字水印类
- C#在WinForm中怎样让多行TEXTBOX的换行
- C#在WinForm中怎样让多行TEXTBOX的换行
- WinForm实现为TextBox设置水印文字功能
- asp.net为图片添加文字水印
- Android为图片添加水印文字
- Imagick 为图片添加文字水印
- C# 添加文字水印类代码
- C# 添加文字水印类代码
- C# 添加水印图片、文字、缩略图处理
- 怎样在VS2005中添加Flash控件
- 糖果机器人_0006_day3_帧动画_应该只有一只汤姆猫
- libevent 入门教程:Echo Server based on libevent(转)
- 开发工具使用和介绍
- BZOJ4551——[Tjoi2016&Heoi2016]树
- git常用命令
- 在 Visual C# 中,怎样为 TextBox 控件添加水印文字
- 模仿百度搜索
- MapReduce基础开发之七Hive外部表分区
- iOSUIWebView 的图片,文字大小适应
- javascript继承机制的设计思想
- SSL多域名绑定证书的解决方案
- android工具收藏
- 支付宝集成获取私钥与公钥【原创】
- mpandroidchart地址