Как добавить TextBox с “одноразовой” подсказкой в C#?

326
25 октября 2017, 02:52

Тут увидел годное решение для реализации подсказки в TextBox. Но есть проблема. Изначально (добавил в конструктор) поле показывает подсказку Null. То есть при добавлении строки строки в базу данных значение из этого поля будет никаким - Null. Но я хочу чтобы при вводе любого значения и удаления этого значения подсказка не возвращалась. И в базу данных пойдет не никакое значение, а пустая строка "". Как поправить класс, чтобы подсказка была "одноразовая"?

Answer 1

Что-то тишина в ответах. Своими культяпками вот так сделал:

class CueTextBox : TextBox
{
    [Localizable(true)]
    public string Cue
    {
        get { return mCue; }
        set { mCue = value; updateCue(); }
    }
    public CueTextBox()
        : base()
    {
        this.Cue = "Null";
        this.TextChanged += new System.EventHandler(OnChange);
    }
    private void updateCue()
    {
        if (this.IsHandleCreated && mCue != null)
        {
            SendMessage(this.Handle, 0x1501, (IntPtr)1, mCue);
        }
    }
    void OnChange(object sender, EventArgs e)
    {
        this.Cue = "";
    }
    protected override void OnKeyDown(KeyEventArgs e)
    {
        base.OnKeyDown(e);
        if (e.KeyCode == Keys.Delete && this.Text == "")
            this.Cue = "Null";
    }
    protected override void OnHandleCreated(EventArgs e)
    {
        base.OnHandleCreated(e);
        updateCue();
    }
    private string mCue;
    // PInvoke
    [DllImport("user32.dll", CharSet = CharSet.Unicode)]
    private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, string lp);
}
READ ALSO
Используемая версия языка в Visual Studio

Используемая версия языка в Visual Studio

Как узнать, какая версия языка C# используется в Visual Studio 2015? Как обновить до последней?

310
Вопрос по C# автоматизация и зависание

Вопрос по C# автоматизация и зависание

Уважаемые гуру помогите с вопросамиНедавно начал изучать С# в связке с Visual Studio и вот написал программку ForApss

281
Перехват события

Перехват события

Есть такой код:

195