如何使用C#使用水印System.Windows.Forms.TextBox?

如何使用C#使用水印System.Windows.Forms.TextBox?,c#,winforms,watermark,C#,Winforms,Watermark,我想在Windows窗体的文本框中使用c#水印 我在stackoverflow中找到了。但我真的不知道如何在我的windows应用程序中使用 class WatermarkTextBox : TextBox { private const uint ECM_FIRST = 0x1500; private const uint EM_SETCUEBANNER = ECM_FIRST + 1; [DllImport("user32.dll", CharSet = CharS

我想在Windows窗体的文本框中使用c#水印

我在stackoverflow中找到了。但我真的不知道如何在我的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方法或建议我使用水印的任何其他(简单)方法。

您只需在项目中使用此代码添加一个UserControl<代码>水印文本框应该出现在工具箱的某个地方。将它放在表单中需要水印文本框而不是普通的旧文本框的任何位置,设置
水印文本
属性,如果代码良好,您就可以开始了。

您只需在项目中添加一个带有此代码的用户控件<代码>水印文本框应该出现在工具箱的某个地方。如果需要水印文本框而不是普通的旧文本框,请将其放在表单上,设置
水印文本
属性,如果代码良好,您就可以开始了。

您必须在项目中创建一个新类,然后才能使用方法
设置水印(字符串水印文本)
在您的

上,您必须在项目中创建一个新类,然后才能在您的

上使用方法
设置水印(字符串水印文本)
设置水印是文本框上的扩展方法,因此,在名称空间中添加WatermarkTextBox类的任何位置,都可以使用SetWatermark方法传递要应用于文本框的水印字符串,如:

`myTextBox.SetWatermark("your water mark text here");`

SetWatermark在设计器中将不作为TextBox的公共属性可见,但从代码中可以访问它,就像TextBox对象的任何bult in方法一样

SetWatermark是TextBox上的一个扩展方法,因此在命名空间中添加WatermarkTextBox类的任何位置,都可以使用SetWatermark方法传递要应用于TextBox的水印字符串,如:

`myTextBox.SetWatermark("your water mark text here");`

SetWatermark在设计器中将不作为TextBox的公共属性可见,但从代码中可以访问它,就像TextBox对象的任何bult in方法一样

这辆车很漂亮,试试这个吧:谢谢你的评论投票。让我开心。@Hans::)你在跟我开玩笑,伙计。。。。148474声誉…这是相当多的车,试试这个:谢谢你的评论投票。让我开心。@Hans::)你在跟我开玩笑,伙计。。。。148474声誉…我需要像这样使用文本框的HandleCreated事件:
txtVerificationCode.HandleCreated+=(发件人,e)=>txtVerificationCode.SetWatermark(“在此处粘贴验证码”)我需要像这样使用文本框的HandleCreated事件:
txtVerificationCode.HandleCreated+=(发送方,e)=>txtVerificationCode.SetWatermark(“在此处粘贴验证代码”)