Есть 10 контролов, есть один errorprovider. Если в контроле нет текста, появляется сообщение типа
errorProvider1.SetError(extensionNumBox, "Поле «Добавочный номер» обязательно для заполнения");
Все хорошо, однако значок ошибки остается, а мне хотелось бы чтобы он секунд 5 помигал, потом оповещение исчезло. Если я делаю так
errorProvider1.SetError(extensionNumBox, "");
То у меня не успевает отображаться сама ошибка.
Используйте таймер или await Task.Delay():
ErrorProvider.ErrorProvider для всех контролов (если будете использовать таймер, не забудьте использовать Invoke, поскольку колбэк таймера вызывается не в UI потоке).Пример с использованием Task.Delay():
private async void btnValidate_Click(object sender, EventArgs e)
{
Validate();
await Task.Delay(TimeSpan.FromSeconds(5));
ClearValidation();
}
private void Validate()
{
if (string.IsNullOrEmpty(extensionNumBox.Text))
{
errorProvider1.SetError(
extensionNumBox,
"Поле «Добавочный номер» обязательно для заполнения");
}
// другие проверки
}
private void ClearValidation()
{
errorProvider1.SetError(extensionNumBox, string.Empty);
// очищаем другие контролы
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости