標籤:
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); } }}
C# WinForm TextBox添加浮水印效果