using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace JYControl { /// /// TextBox添加水印文字 /// [ToolboxBitmap(typeof(TextBox))] public class WatermarkTextBox : TextBox { private string _watermark; private Color _watermarkColor = Color.DarkGray; private const int WM_PAINT = 0xF; public WatermarkTextBox() : base() { } /// /// 输入需要显示水印文字 /// /// [Category("控件属性")] [Description("输入需要显示水印文字")] [DefaultValue("")] public string Watermark { get { return _watermark; } set { _watermark = value; base.Invalidate(); } } /// /// 改变水印文字的颜色 /// /// [Category("控件属性")] [Description("改变水印文字的颜色")] [DefaultValue(typeof(Color), "DarkGray")] public Color WatermarkColor { get { return _watermarkColor; } set { _watermarkColor = 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(_watermark) && !Focused) { TextFormatFlags format = TextFormatFlags.EndEllipsis | TextFormatFlags.VerticalCenter; if (RightToLeft == RightToLeft.Yes) { format |= TextFormatFlags.RightToLeft | TextFormatFlags.Right; } TextRenderer.DrawText( graphics, _watermark, Font, base.ClientRectangle, _watermarkColor, format); } } } } }