Насколько верное решение placeholder textbox c#?

420
20 января 2017, 05:48

Искал в интернете как сделать placeholder для TextBox но не нашел компактного кода и решил изобрести еще один велосипед.

На форме есть textbox в свойствах стоит Text = "Placeholder Text" и Tag = "Placeholder Text", далее вешаю обработчик событий

Определяем цвета placeholder'a

Color LeaveColor = Color.FromArgb(160, 160, 160);
Color EnterColor = Color.FromArgb(0, 0, 0);

private void txt_kontrIn_Leave(object sender, EventArgs e)
{
    if(txt_kontrIn.Text == "")
    {
        txt_kontrIn.Text = (string)txt_kontrIn.Tag;
        txt_kontrIn.ForeColor = LeaveColor;
    }
}

и

private void txt_kontrIn_Enter(object sender, EventArgs e)
{
    if(txt_kontrIn.Text == (string)txt_kontrIn.Tag)
    {
        txt_kontrIn.Text = "";
        txt_kontrIn.ForeColor = EnterColor;
    }
}

Насколько верно это решение и можно ли этот код еще сократить?

P.s. на форме много текстбоксов.

Answer 1

на форме много текстбоксов.

Сделай класс-наследник текстбокса, который будет добавлять placeholder. Его и используй.

Насколько верно это решение

Лучше сохранять отдельный флаг, пустое ли поле. Если пустое, то подменять как сейчас, если нет, то не трогать. Это позволит пользователю вводить текст, совпадающий с плейсхолдером.

можно ли этот код еще сократить?

Перестать копипастить код и сделать класс, инкапсулирующий соответствующую логику.

READ ALSO
Сравнение типов значений

Сравнение типов значений

Доброго времени сутокСуть - есть метод:

255
Вычислить возраст и добавить в столбец age phpMyAdmin

Вычислить возраст и добавить в столбец age phpMyAdmin

Есть таблица student(birthday,age) В birthday заносятся данные из input type="data" Как вычислить возраст студента и добавить в строку age в student?

415