WindowsForm实现TextBox占位符Placeholder提示功能
在WinForm程序中,实现TextBox文本输入框占位符的方式也很多,最常用的是方式基于Windows Api SendMessage函数发送EM_SETCUEBANNER消息,或者通过TextBox自带的焦点事件处理。
SendMessage函数实现
创建一个继承TextBox的ZhmTextBox输入框控件,新增Placeholder属性,在Placeholder的set方法中发送EM_SETCUEBANNER消息
public class ZhmTextBox: TextBox { 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); private string placeholder = string.Empty; public string Placeholder { get { return placeholder; } set { placeholder = value; SendMessage(Handle, EM_SETCUEBANNER, 0, Placeholder); } } }
重新编译下项目,就可以在工具箱中找到ZhmTextBox控件,然后设置ZhmTextBox的Placeholder属性
通过TextBox的GotFocus和LostFocus事件
不知道为啥微软要将TextBox的这两个事件标注Browsable为false,所以在VS的属性面板中是找不到这两个事件的,只能手动撸了。
private void Form1_Load(object sender, EventArgs e) { textBox1.Text = "此处是一些提示内容..."; textBox1.LostFocus += TextBox1_LostFocus; textBox1.GotFocus += TextBox1_GotFocus; } private void TextBox1_GotFocus(object sender, EventArgs e) { textBox1.Text = ""; } private void TextBox1_LostFocus(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(textBox1.Text)) textBox1.Text = "此处是一些提示内容..."; }
如果针对每个控件都这样撸还是有些麻烦,可以扩展下TextBox类,把事件处理放在子类的构造中去调用,这样使用的时候也比较省事。具体代码就不写了,有兴趣的可以自己去实现。
到此这篇关于WindowsForm实现TextBox占位符Placeholder提示的文章就介绍到这了,更多相关TextBox占位符Placeholder提示内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
相关文章
C#使用RichTextBox实现替换文字及改变字体颜色功能示例
这篇文章主要介绍了C#使用RichTextBox实现替换文字及改变字体颜色功能,结合实例形式洗了C#中RichTextBox组件文字替换及改变字体颜色相关操作技巧,需要的朋友可以参考下...2020-06-25- 这篇文章主要为大家详细介绍了C# TextBox数据绑定的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
WindowsForm实现TextBox占位符Placeholder提示功能
这篇文章主要介绍了WindowsForm实现TextBox占位符Placeholder提示,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-13C#实现winform中RichTextBox在指定光标位置插入图片的方法
这篇文章主要介绍了C#实现winform中RichTextBox在指定光标位置插入图片的方法,涉及RichTextBox控件及剪切板的相关操作技巧,非常简单实用,需要的朋友可以参考下...2020-06-25- 这篇文章主要介绍了c# textbox的滚动条总是指向最底端的简单解决方法,需要的朋友可以参考下...2020-06-25
- 这篇文章主要为大家详细介绍了WPF TextBox实现按字节长度限制输入功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 最近在使用C# TextBox多行文本框的时候,发现了其对字数限制的一点问题,所以总结下在使用C# TextBox多行文本框要注意的的字数限制问题,现在分享给大家,有需要的朋友们可以参考借鉴,下面来一起看看吧。...2020-06-25
- 这篇文章主要介绍了C#中TextBox实现输入提示功能的方法,涉及C#中TextBox的相关操作技巧,需要的朋友可以参考下...2020-06-25
- C# TextBox 扩展方法数据验证详细说明,需要的朋友可以参考一下...2020-06-25
- 这篇文章主要为大家详细介绍了C# RichTextBox制作文本编辑器的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
.NET中TextBox控件设置ReadOnly=true后台取不到值三种解决方法
当TextBox设置了ReadOnly=true后要是在前台为控件添加了值,后台是取不到的,值为空,多么郁闷的一个问题经过尝试,发现可以通过如下的方式解决这个问题.感兴趣的朋友可以了解下...2021-09-22- Asp.net之TextBox只允许输入数字的方法总结,需要的朋友可以参考一下...2021-09-22
- 有时候项目中需要在页面上动态生成一些控件,所以PlaceHolder容器是个不错的选择。微软在asp.net 2.0 中给出的PlaceHolder解决方案,更加符合后台和表现分离的原则。...2021-09-22
使用 tke-autoscaling-placeholder 实现秒级弹性伸缩的方法
这篇文章主要介绍了使用 tke-autoscaling-placeholder 实现秒级弹性伸缩的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-26- TextBox 控件为用户提供了一种向 ASP.NET 网页中键入信息(包括文本、数字和日期)的方法。...2021-09-22
将FreeTextBox做成控件添加到工具箱中的具体操作方法
以下是对将FreeTextBox做成控件添加到工具箱中的具体操作方法进行了详细的介绍,需要的朋友可以过来参考下...2021-09-22C# Winform使用扩展方法实现自定义富文本框(RichTextBox)字体颜色
这篇文章主要介绍了C# Winform使用扩展方法实现自定义富文本框(RichTextBox)字体颜色,通过.NET的静态扩展方法来改变RichTextBox字体颜色,需要的朋友可以参考下...2020-06-25ASP.NET中TextBox使用Ajax控件显示日期不全的问题解决方法
这篇文章介绍了ASP.NET中TextBox使用Ajax控件显示日期不全的问题解决方法,有需要的朋友可以参考一下...2021-09-22- placeholder属性是HTML5 中为input添加的。在input上提供一个占位符,文字形式展示输入字段预期值的提示信息(hint),该字段会在输入为空时显示...2016-01-18
- 这篇文章主要为大家详细介绍了WPF TextBox和PasswordBox添加水印的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25