Chvalov
@Chvalov

Как задать Placeholder для TextBox в среде VisualStudio 2013 язык C#?

Здравствуйте писал на Delphi в XE7 там было свойство в текстового поля placeholder.
Захотел пересесть на C# и столкнулся с тем что здесь данное свойство отсутствует :-(

Как быть в данном случае ?

Может можно сделать чтобы при нажатие на текстовое поле текст удалялся, и если пользователь ввел текст и при случайном нажатии на поле ввода оно не удаляло его текст
  • Вопрос задан
  • 10314 просмотров
Пригласить эксперта
Ответы на вопрос 3
aush
@aush
Т.к. фреймворк не указан, надо полагать, что по дефолту у нас WinForms. Тогда в простейшем виде это выглядит так:

class TextBoxWithPlaceholder : TextBox
{
    public string Placeholder { get; set; }

    protected override void OnCreateControl()
    {
        base.OnCreateControl();

        if (!DesignMode)
        {
            Text = Placeholder;
        }
    }

    protected override void OnLostFocus(EventArgs e)
    {
        base.OnLostFocus(e);

        if (Text.Equals(string.Empty))
        {
            Text = Placeholder;
        }
    }

    protected override void OnGotFocus(EventArgs e)
    {
        base.OnGotFocus(e);

        if (Text.Equals(Placeholder))
        {
            Text = string.Empty;
        }
    }
}
Ответ написан
lam0x86
@lam0x86
Если WinForms, то, начиная с WinXP в ОС встроена поддержка данной фичи, и называется это Cue Banners. Здесь написано, как это можно прикрутить: stackoverflow.com/a/4902969

Если WPF, то можно посмотреть здесь: stackoverflow.com/a/833967
Ответ написан
Комментировать
@idSergey
Можно пошаманить с твоей идей, сделать контрол, так же посмотри события там их много, я бы убирал текст при условии что поле пустое и ставил placeholder, а при фокусе убирал placeholder, можно и флаг врубить и через него проверять. Идей куча.
Можно так же посмотреть контролы с реализацией.
Удачи:)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы