修改 font的文本信息_C#窗体,文本框如何实现类似html的输入提示信息
发布日期:2022-02-04 01:44:00 浏览次数:26 分类:技术文章

本文共 2413 字,大约阅读时间需要 8 分钟。

文章开始之前,先看下效果图:

5dda9e5d5a1d1842869fdb58068099b8.png

那么这个是如何实现的,Winform自带的TextBox是不具备这种PlaceHolder提示功能的,要实现它,我们就需要重写TextBox控件。

具体代码如下:

using System;using System.Collections.Generic;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace RevitDevelopment.CustomControls{    ///     /// 带有PlaceHolder的Textbox    ///     /// marc    public class PlaceHolderTextBox : TextBox    {        private bool _isPlaceHolder = true;        private string _placeHolderText;        ///         /// 提示文本        ///         public string PlaceHolderText        {            get { return _placeHolderText; }            set            {                _placeHolderText = value;                SetPlaceholder();            }        }        ///         /// 文本        ///         public new string Text        {            get            {                return _isPlaceHolder ? string.Empty : base.Text;            }            set            {                base.Text = value;            }        }        ///         /// 构造函数        ///         public PlaceHolderTextBox()        {            GotFocus += RemovePlaceHolder;            LostFocus += SetPlaceholder;        }        ///         /// 当焦点失去的时候,将清空提示文本        ///         private void SetPlaceholder()        {            if (string.IsNullOrEmpty(base.Text))            {                base.Text = PlaceHolderText;                this.ForeColor = Color.Gray;                this.Font = new Font(this.Font, FontStyle.Italic);                _isPlaceHolder = true;            }        }        ///         /// 当焦点获得的时候,将显示提示文本        ///         private void RemovePlaceHolder()        {            if (_isPlaceHolder)            {                base.Text = "";                this.ForeColor = SystemColors.WindowText;                this.Font = new Font(this.Font, FontStyle.Regular);                _isPlaceHolder = false;            }        }        ///         /// 失去焦点        ///         ///         ///         private void SetPlaceholder(object sender, EventArgs e)        {            SetPlaceholder();        }        ///         /// 获得焦点        ///         ///         ///         private void RemovePlaceHolder(object sender, EventArgs e)        {            RemovePlaceHolder();        }    }}
208882e23c6dbb67693c4b03be032bf1.gif

代码是简单明了的,它提供了属性PlaceHolderText,用于填写提示信息,当焦点获得或者失去时,将触发事件。

将该代码,写好后编译,将会在“工具箱”中出现这个组件:

385db2715dee170ee8101eaf3a719c04.png

将该组件拖入您想要使用的地方,然后设置如下属性:

f49d3b2a1c3713a3c8258d1cafa41d17.png

如此,便可以实现开篇的效果图。

祝您用餐愉快。

转载地址:https://blog.csdn.net/weixin_39603908/article/details/110812631 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:找不到匹配的key exchange算法_AC自动机 | 多字符串匹配你会吗?
下一篇:一段看不懂的乱码字符_字符乱码的解读

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月13日 09时24分40秒