我想使用c#在我的Windows窗体的文本框中使用水印?
我在stackoverflow中找到了this link。但我真的无法弄清楚如何在我的Windows应用程序中使用。
class WatermarkTextBox : TextBox
{
private const uint ECM_FIRST = 0x1500;
private const uint EM_SETCUEBANNER = ECM_FIRST + 1;
[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);
}
}
请帮助如何使用SendMessage方法或建议我使用其他(简单)方法来使用水印。
答案 0 :(得分:5)
您必须在项目中创建新的课程TextBoxWatermarkExtensionMethod,然后才能在textbox
上使用SetWatermark(string watermarkText)
方法
答案 1 :(得分:0)
您只需在项目中添加带有此代码的UserControl。 WatermarkTextBox
应该出现在您的工具箱中。将它放在您需要带水印文本框而不是普通旧文本框的表单上,设置WatermarkText
属性,如果代码良好,您应该准备好了。
答案 2 :(得分:0)
SetWatermark是TextBox上的扩展方法,因此在添加了WatermarkTextBox类的命名空间的任何位置,您都可以使用SetWatermark方法传递要在TextBox上应用的水印字符串,如:
`myTextBox.SetWatermark("your water mark text here");`
SetWatermark在设计器上不会作为TextBox的公共属性显示,但是形成您的代码,就像TextBox对象的任何bult-in方法一样。