天天看點

C# 實作textBox的水印提示效果

1.在项目上右击,添加,用户控件。以WatermarkTextBox.cs命名.

2.添加命名空间using System.Runtime.InteropServices;  因为DllImport是System.Runtime.InteropService命名控件下的一个属性类,

在 WatermarkTextBox.cs中添加代码如下

 public partial class WatermarkTextBox : TextBox      //将此控件的继承类型从UserControl改成TextBox。即继承TextBox控件的所有功能。

    {

        public WatermarkTextBox()

        {

            InitializeComponent();

        }

 

        private const uint ECM_FIRST = 0x1500;

        private const uint EM_SETCUEBANNER = ECM_FIRST + 1;

       

        //通过SendMessage发送EM_SETCUEBANNER消息,即可达到添加水印文字的效果。

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]

        static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, uint wParam, [MarshalAs(UnmanagedType.LPWStr)]string lParam);

 

        private string watermarkText;

        public string WatermarkText

        {

            get { return watermarkText; }

            set

            {

                watermarkText = value;

                SetWatermark(watermarkText);

            }

        }

 

        private void SetWatermark(string watermarkText)

        {

            SendMessage(this.Handle,EM_SETCUEBANNER,0,watermarkText);

        }

    }

3.运行,将报错的那一行代码删除。

4.右击项目,重新生成。在工具栏中,项目名下,可以看到自定义控件WatermarkTextBox,将其如正常控件一样拖到form中即可使用;

设置其属性WatermarkText的值,即显示水印提示效果。