WinForm实现为TextBox设置水印文字功能
作者:shichen2014 发布时间:2023-06-09 21:15:38
标签:WinForm,TextBox,水印
本文实例展示了WinForm实现为TextBox设置水印文字功能,非常实用的技巧,分享给大家供大家参考。
关键代码如下:
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace WinFormUtilHelpV2
{
/// <summary>
/// 基于.NET 2.0的TextBox工具类
/// </summary>
public static class TextBoxToolV2
{
private const int EM_SETCUEBANNER = 0x1501;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern Int32 SendMessage
(IntPtr hWnd, int msg, int wParam, [MarshalAs(UnmanagedType.LPWStr)] string lParam);
/// <summary>
/// 为TextBox设置水印文字
/// </summary>
/// <param name="textBox">TextBox</param>
/// <param name="watermark">水印文字</param>
public static void SetWatermark(this TextBox textBox, string watermark)
{
SendMessage(textBox.Handle, EM_SETCUEBANNER, 0, watermark);
}
/// <summary>
/// 清除水印文字
/// </summary>
/// <param name="textBox">TextBox</param>
public static void ClearWatermark(this TextBox textBox)
{
SendMessage(textBox.Handle, EM_SETCUEBANNER, 0, string.Empty);
}
}
}
测试代码如下:
using System;
using System.Windows.Forms;
using WinFormUtilHelpV2;
namespace WinFormUtilHelpV2Test
{
public partial class WinTextBoxToolV2Test : Form
{
public WinTextBoxToolV2Test()
{
InitializeComponent();
}
private void WinTextBoxToolV2Test_Load(object sender, EventArgs e)
{
textBox1.SetWatermark("请输入用户名称....");
textBox2.SetWatermark("请输入用户密码....");
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.ClearWatermark();
textBox2.ClearWatermark();
}
}
}
测试效果如下图所示:
希望本文所述的为TextBox设置水印文字功能示例对大家C#程序设计有所帮助!


猜你喜欢
- 引言最近的项目需求中有使用到后端发送http请求,在网上寻找资料后发现可以使用spring自带的RestTemplate类实现,故作此记录项
- 一、案例场景在使用 @Autowired 时,你或多或少都会遇过类似的错误:required a single bean, but 2 we
- 基本步骤三数取中在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。在此我们采用三数取中法,也就是取左端、中间
- 通常,反射用于动态获取对象的类型、属性和方法等信息。今天带你玩转反射,来汇总一下反射的各种常见操作,捡漏看看有没有你不知道的。获取类型的成员
- 引言在前两篇文章中,我们了解了ReentrantLock内部公平锁和非公平锁的实现原理,可以知道其底层基于AQS,使用双向链表实现,同时在线
- 返回值转成JSONString的处理主要需求描述有些返回值中的null需要转换成“”或[],另外有些
- Interfaces 接口在软件工程中,由一份“契约”规定来自不同的开发小组的软件之间如何相互作用是非常常见的。每个小组都可以在不知道别的组
- 在SpringMVC的入门学习中,我发现@GetMapping注解的使用要注意路径冲突问题,在网上都没找到类似我这样的情况,所以我在这里将问
- 组合模式是一种常见的设计模式(但我感觉有点复杂)也叫合成模式,有时又叫做部分-整体模式,主要是用来描述部分与整体的关系。个人理解:组合模式就
- FileOutPutStream:子类,写出数据的通道步骤:1.获取目标文件2.创建通道(如果原来没有目标文件,则会自动创建一个)3.写入数
- 主题 ActiveMQ Spring Boot 小程序开发1.引入依赖<parent><groupId>org.sp
- 今天我们来讨论如何在项目开发中优雅地使用RocketMQ。本文分为三部分,第一部分实现SpringBoot与RocketMQ的整合,第二部分
- java Iterator接口和LIstIterator接口分析目录1.Iterator接口2.ListIterator3.It
- DSL的作用是解决领域专家与软件开发人员之间的沟通问题。听起来很唬人,其实不是什么高深的东西,我们可以使用Fluent API 创建自己的D
- 前言在前面的学习中,我们基本了解了一些 Canvas 的绘制,那么这一章我们一起复习一下图片的绘制几种方式,和事件的简单交互方式。我们从易到
- 由于机器内存坏了,换了个内存,重新安装了一个64位的Fedora16,把原来的32位的Fedora15格掉了。于是在重新安装Android
- Java中List.of()和Arrays.asList()的区别及原因动手写一下,让自己更有印象1.Arrays.asList()可以插入
- C#之继承继承、封装和多态是面向对象编程的重要特性。其成员被继承的类叫基类也称父类,继承其成员的类叫派生类也称子类。派生类隐式获得基类的除构
- 前言代码库:https://gitee.com/leo825/springboot-learning-parents.git之前写过《Spr
- 导入redis的jar包<!-- redis --> <dependency>