Искал в интернете как сделать 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. на форме много текстбоксов.
на форме много текстбоксов.
Сделай класс-наследник текстбокса, который будет добавлять placeholder. Его и используй.
Насколько верно это решение
Лучше сохранять отдельный флаг, пустое ли поле. Если пустое, то подменять как сейчас, если нет, то не трогать. Это позволит пользователю вводить текст, совпадающий с плейсхолдером.
можно ли этот код еще сократить?
Перестать копипастить код и сделать класс, инкапсулирующий соответствующую логику.
Есть таблица student(birthday,age) В birthday заносятся данные из input type="data" Как вычислить возраст студента и добавить в строку age в student?