#c# #winforms #errorprovider
Вопрос:
Поставщик ошибок, который я установил для имени пользователя, не очищается должным образом. Что я понял из своего исследования, так это то, что если к SetErrorProvider была добавлена пустая строка, ошибка будет устранена сама по себе. Однако в моем случае это не работает. Я использую Winform C# , и вот мой пример кода.
private void usernamet_Validating(object sender, CancelEventArgs e)
{
ErrorProvider errorProvider = new ErrorProvider();
if (!Regex.IsMatch(usernamet.Text, @"^[a-zA-Z0-9]*$"))
{
e.Cancel = true;
errorProvider.SetError(usernamet, "Username cannot contain special characters.");
}
else
{
e.Cancel = false;
errorProvider.Clear();
errorProvider.SetError(usernamet, "");
errorProvider.SetError(usernamet, null);
errorProvider.SetError(usernamet, string.Empty);
}
}
я установил 4 точки останова для каждого примера решения, полученного в ходе моего исследования, однако ошибка не устраняется сама по себе, как показано на рисунках.
Комментарии:
1. Это нишевая библиотека, я бы спросил авторов. Либо это, либо загрузите код и отладьте его
2. Вот в чем твоя проблема:
ErrorProvider errorProvider = new ErrorProvider();
. Вы создаете новый экземпляр , не связанный с существующим объектом ErrorProvider. Уберите его. — Кстати, Одна из основных причин использования ErrorProvider заключается в том, чтобы избежать свойства события проверкиCancel
. Так что не смешивайте эти два. @Общий . Система Сети. Windows. Формы-это не та ниша библиотеки 🙂3. В случае, если вы не добавили компонент ErrorProvider — из набора инструментов — или вы сами не объявили объект поля ErrorProvider, сделайте это в первую очередь.
4. Спасибо, Джими, это работает. Я переместил ErrorProvider ErrorProvider = новый ErrorProvider(); за пределы метода проверки. Откуда вы знаете, что он не связан с существующим объектом ErrorProvider?
5. Извините, я не понимаю вопроса.