• C# WinForm TextBox添加水印效果


    1、新建项目添加WatermarkTextBox类:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows.Forms;
    using System.Drawing;
    using System.ComponentModel;
    
    namespace TextBoxWatermark
    {
        [ToolboxBitmap(typeof(TextBox))]
        public class WatermarkTextBox : TextBox
        {
            private string _emptyTextTip;
            private Color _emptyTextTipColor = Color.DarkGray;
            private const int WM_PAINT = 0xF;
    
            public WatermarkTextBox()
                : base()
            {
            }
    
            [DefaultValue("")]
            public string EmptyTextTip
            {
                get { return _emptyTextTip; }
                set
                {
                    _emptyTextTip = value;
                    base.Invalidate();
                }
            }
    
            [DefaultValue(typeof(Color), "DarkGray")]
            public Color EmptyTextTipColor
            {
                get { return _emptyTextTipColor; }
                set
                {
                    _emptyTextTipColor = value;
                    base.Invalidate();
                }
            }
    
            protected override void WndProc(ref Message m)
            {
                base.WndProc(ref m);
                if (m.Msg == WM_PAINT)
                {
                    WmPaint(ref m);
                }
            }
    
            private void WmPaint(ref Message m)
            {
                using (Graphics graphics = Graphics.FromHwnd(base.Handle))
                {
                    if (Text.Length == 0
                        && !string.IsNullOrEmpty(_emptyTextTip)
                        && !Focused)
                    {
                        TextFormatFlags format =
                            TextFormatFlags.EndEllipsis |
                            TextFormatFlags.VerticalCenter;
    
                        if (RightToLeft == RightToLeft.Yes)
                        {
                            format |= TextFormatFlags.RightToLeft | TextFormatFlags.Right;
                        }
    
                        TextRenderer.DrawText(
                            graphics,
                            _emptyTextTip,
                            Font,
                            base.ClientRectangle,
                            _emptyTextTipColor,
                            format);
                    }
                }
            }
        }
    }

    2、在Form中实例化控件并添加:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace TextBoxWatermark
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
    
                TextBoxWatermark.WatermarkTextBox tbName = new WatermarkTextBox();
                tbName.EmptyTextTip = "请输入你的账号";
                tbName.Location = new System.Drawing.Point(116, 63);
                tbName.Size = new System.Drawing.Size(150, 21);
                tbName.Name = "tbName";
                tbName.TabStop = false;
                //tbName.TabIndex = 0;
                this.Controls.Add(tbName);
    
                TextBoxWatermark.WatermarkTextBox tbPassword = new WatermarkTextBox();
                tbPassword.EmptyTextTip = "请输入你的密码";
                tbPassword.Location = new System.Drawing.Point(116, 90);
                tbPassword.Size = new System.Drawing.Size(150, 21);
                tbPassword.Name = "tbPassword";
                tbPassword.TabStop = false;
                //tbName.TabIndex = 0;
                this.Controls.Add(tbPassword);
            }
        }
    }
  • 相关阅读:
    LeetCode刷题191120
    LeetCode刷题191119
    LeetCode刷题191118
    LeetCode刷题191117
    Http相关小知识点笔记咯~
    Java开发之JSP指令
    Java开发之Servlet之间的跳转
    Java开发之Servlet生命周期
    Java开发之文件上传
    微信公众号开发之数据库
  • 原文地址:https://www.cnblogs.com/ZCoding/p/4269637.html
Copyright © 2020-2023  润新知