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的值,即显示水印提示效果。