Member 13985914 Ответов: 1

Как очистить ошибку от errorprovider один за другим


привет, ребята!
это мой код для проверки формы с помощью errorprovider:
errorProvider1.Clear();
if (textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "" || comboBox1.Text == "" || comboBox2.Text == "" )
                {
                    errorProvider1.SetError(textBox2,"Empty Data can't accepted!");
                    errorProvider1.SetError(textBox3, "Empty Data can't accepted!");
                    errorProvider1.SetError(textBox4, "Empty Data can't accepted!");
                    errorProvider1.SetError(comboBox1, "Empty Data can't accepted!");
                    errorProvider1.SetError(comboBox2, "Empty Data can't accepted!");
                    return;
                }

Теперь есть две проблемы:
1): Когда текст приходит в textbox2, ошибка не исчезает
2): я хочу удалить ошибку из каждого текстового поля, когда приходят сфокусированные

Что я уже пробовал:

я пробовал этот код, но он не работает..
if (textBox2.Focused == true || textBox3.Focused == true || textBox4.Focused == true || comboBox1.Focused == true || comboBox2.Focused == true)
                {
                    errorProvider1.Clear();
                    return;
                }

1 Ответов

Рейтинг:
2

OriginalGriff

Вы не можете "объединить ошибки", а затем предположить, что сообщение об ошибке с "волшебным образом исчезнет".
Когда вы пишете это:

if (textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "" || comboBox1.Text == "" || comboBox2.Text == "" )
Затем будет выполнен следующий код, если какой-нибудь все текстовые поля пусты, поэтому каждое текстовое поле получит ваше сообщение.
Вместо того, чтобы делать это, сделайте это:
if (textBox2.Text == "")
   {
   errorProvider1.SetError(textBox2,"Empty Data can't accepted!");
   return;
   }
if (textBox3.Text == "")
   {
   errorProvider1.SetError(textBox3,"Empty Data can't accepted!");
   return;
   }
...
так что вы уведомляете только о "плохих значениях".
Или еще лучше:
if (string.IsNullOrWhiteSpace(textBox2.Text))
   {
   errorProvider1.SetError(textBox2,"Empty Data can't accepted!");
   return;
   }
if (string.IsNullOrWhiteSpace(textBox3.Text))
   {
   errorProvider1.SetError(textBox3,"Empty Data can't accepted!");
   return;
   }
...


[редактировать]
Опечатка IsNullOrWhiteSpace как IsNullOrWhitespace: исправлено.
[/редактировать]


Member 13985914

но в этом случае моя проверка будет очень трудной не могли бы вы показать мне ярлык для проверки моей winform

OriginalGriff

"Так сложно"? три строки кода для каждого текстового поля плюс пара скобок? И код почти идентичен для каждого текстового поля?

Поверьте мне, если вы думаете, что это трудно, вам еще многому предстоит научиться!

Member 13985914

ладно... я сказал это, потому что у меня есть 30 бланков... и еще одна его строка дает мне ошибку".IsNullOrWhitespace"

OriginalGriff

Какая ошибка (и какая версия).NET framework вы используете)?

Member 13985914

"IsNullOrWhitespace" дайте мне ошибку:
"не содержит определения для IsNullOrWhitespace "

OriginalGriff

Моя ошибка: это IsNullOrWhiteSpace - заглавная буква "S" имеет большое значение.
Прости меня за это ... :румянец:

Member 13985914

4.5.2 .чистая рамки