Как использовать водяной знак System.Windows.Forms.TextBox с помощью C #? - PullRequest
0 голосов
/ 14 марта 2011

Я хочу использовать водяной знак в текстовых полях формы 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 или Предложите мне любой другой (простой) способ использовать водяной знак.

Ответы [ 3 ]

5 голосов
/ 16 февраля 2012

Вы должны создать новый класс TextBoxWatermarkExtensionMethod в своем проекте, и после того, как вы сможете использовать метод SetWatermark(string watermarkText) в вашем текстовом поле

0 голосов
/ 19 июля 2013

SetWatermark - это метод расширения для TextBox, поэтому в любом месте пространства имен, где добавлен класс WatermarkTextBox, вы можете использовать метод SetWatermark, передавая строку водяного знака, которую вы хотите применить к TextBox, следующим образом:SetWatermark не будет виден как открытое свойство TextBox в конструкторе, но из вашего кода он доступен точно так же, как любой из встроенных методов объекта TextBox.

0 голосов
/ 14 марта 2011

Вы просто добавляете UserControl с этим кодом в свой проект.WatermarkTextBox должно появиться где-то в вашем наборе инструментов.Поместите его в форму везде, где вам нужно текстовое поле с водяным знаком вместо простого старого текстового поля, установите свойство WatermarkText, и вы должны быть готовы к работе, если код хороший.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...