winform textbox加水印效果

首先创建一个用户控件名称为WatermakTextBox,让其继承textbox,代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace UpdateSetting
{
    public partial class WatermakTextBox : TextBox
    {
        private readonly Label lblwaterText = new Label();

        public WatermakTextBox()
        {
            InitializeComponent();
            lblwaterText.BorderStyle = BorderStyle.None;
            lblwaterText.Enabled = false;
            lblwaterText.BackColor =Color.White;
            lblwaterText.AutoSize = false;
            lblwaterText.Top = 1;
            lblwaterText.Left = 0;
            Controls.Add(lblwaterText);
        }

        [Category("扩展属性"), Description("显示的水印提示信息")]
        public string WaterText
        {
            get { return lblwaterText.Text; }
            set { lblwaterText.Text = value; }
        }

        public override string Text
        {
            set
            {
                if (value != string.Empty)
                    lblwaterText.Visible = false;
                else
                    lblwaterText.Visible = true;
                base.Text = value;
            }
            get { return base.Text; }
        }

        protected override void OnSizeChanged(EventArgs e)
        {
            if (Multiline && (ScrollBars == ScrollBars.Vertical || ScrollBars == ScrollBars.Both))
                lblwaterText.Width = Width - 20;
            else
                lblwaterText.Width = Width;
            lblwaterText.Height = Height - 2;
            base.OnSizeChanged(e);
        }

        protected override void OnEnter(EventArgs e)
        {
            lblwaterText.Visible = false;
            base.OnEnter(e);
        }

        protected override void OnLeave(EventArgs e)
        {
            if (base.Text == string.Empty)
                lblwaterText.Visible = true;
            base.OnLeave(e);
        }

    }
}

然后将生成后的用户控件放到自己的项目中使用即可

原文地址:https://www.cnblogs.com/songling/p/2126583.html