using System.Drawing; using System.Windows.Forms; namespace KK.WaterMark.Control { public partial class WaterMarkTextBox : TextBox { private string watermarkText; public string WatermarkText { get { return watermarkText; } set { watermarkText = value; } } private Color watermarkTextColor; public Color WatermarkTextColor { get { return watermarkTextColor; } set { watermarkTextColor = value; } } public WaterMarkTextBox() { InitializeComponent(); } protected override void WndProc(ref Message m) { base.WndProc(ref m); if (m.Msg ==0x000F )//WM_PAINT { WmPaint(ref m); } } private void WmPaint(ref Message m) { Rectangle rectangle = new Rectangle(0, 0, Width, Height); using (Graphics graphics = Graphics.FromHwnd(base.Handle)) { if (Text.Length == 0 && !string.IsNullOrEmpty(watermarkText) && !Focused) { TextFormatFlags format = TextFormatFlags.EndEllipsis | TextFormatFlags.VerticalCenter; if (RightToLeft == RightToLeft.Yes) { format |= TextFormatFlags.RightToLeft | TextFormatFlags.Right; } TextRenderer.DrawText(graphics, watermarkText, Font, base.ClientRectangle, watermarkTextColor, format); } } } } }
运行效果如下所示: