Каков самый простой способ воссоздать эффект, когда текстовое поле отображает определенную строку (курсивом и другим шрифтом), пока пользователь не щелкнет в элементе управления и/или не напишет свой собственный текст в поле? Например, посмотрите на поле поиска в верхнем правом углу SO.Как отобразить текст по умолчанию в EditControls?
Я попытался потребляя событие Paint:
private void textEdit1_Paint(object sender, PaintEventArgs e)
{
if (textEdit1.Text.Length == 0 && !textEdit1.Focused)
{
textEdit1.Font = new Font(textEdit1.Font, FontStyle.Italic);
textEdit1.Text = "123";
}
else
{
textEdit1.Font = new Font(textEdit1.Font, FontStyle.Regular);
textEdit1.Text = string.Empty;
}
}
Однако, это не работает. По умолчанию он не отображает текст, и если я нажимаю на него, я, кажется, получаю бесконечный цикл установки текста на «123» и string.empty, пока я не дам еще один фокус управления.
Итак, это тот подход даже к лучшему, и если да, то какое правильное второе условие вместо .фокусировано?
Нет ли свойства «NullText», которое вы можете использовать? – Willem
@Willem Да, есть, но он использует тот же шрифт, что и обычный текст, поэтому это не тот взгляд, который я собираюсь сделать. – Hackworth