Как добавить заполнитель в текстовое поле в форме Windows: несколько методов

Чтобы добавить заполнитель в текстовое поле приложения Windows Form, вы можете использовать один из следующих методов:

Метод 1. Используйте событие TextChanged

  1. Задайте исходный текст текстового поля в качестве текста-заполнителя.
  2. Подписаться на событие TextChanged текстового поля.
  3. В обработчике событий проверьте, пусто ли текстовое поле. Если это так, установите текст обратно в текст-заполнитель.

Пример:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (string.IsNullOrEmpty(textBox1.Text))
    {
        textBox1.Text = "Enter your text here...";
    }
}

Метод 2: используйте события Enter и Leave

  1. Задайте исходный текст текстового поля в качестве текста-заполнителя.
  2. Подписаться на события Enter и Leave текстового поля.
  3. В обработчике события Enter проверьте, соответствует ли текст текстового поля тексту заполнителя. Если да, очистите текст текстового поля.
  4. В обработчике события Leave проверьте, пусто ли текстовое поле. Если это так, установите текст обратно в текст-заполнитель.

Пример:

private void textBox1_Enter(object sender, EventArgs e)
{
    if (textBox1.Text == "Enter your text here...")
    {
        textBox1.Clear();
    }
}
private void textBox1_Leave(object sender, EventArgs e)
{
    if (string.IsNullOrEmpty(textBox1.Text))
    {
        textBox1.Text = "Enter your text here...";
    }
}

Метод 3. Используйте собственный элемент управления TextBox

  1. Создайте собственный элемент управления TextBox, унаследовав его от класса TextBox.
  2. Переопределить метод OnPaint, чтобы отрисовывать текст-заполнитель, когда текстовое поле пусто.
  3. Обработка события MouseClick для удаления текста-заполнителя при щелчке по текстовому полю.

Пример:

public class PlaceholderTextBox : TextBox
{
    private string placeholderText = "Enter your text here...";
    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        if (string.IsNullOrEmpty(Text) && !Focused)
        {
            using (var brush = new SolidBrush(ForeColor))
            {
                e.Graphics.DrawString(placeholderText, Font, brush, ClientRectangle);
            }
        }
    }
    protected override void OnMouseClick(MouseEventArgs e)
    {
        base.OnMouseClick(e);
        if (string.IsNullOrEmpty(Text))
        {
            Text = string.Empty;
        }
    }
}

Чтобы использовать пользовательский элемент управления TextBox, необходимо добавить его в дизайн формы Windows или создать программным способом.