Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Проблема с ErrorProvider. Преверка корректности ввода из TextBox-a. (http://forum.oszone.net/showthread.php?t=219721)

Glorh 04-11-2011 21:15 1788737

Проблема с ErrorProvider. Преверка корректности ввода из TextBox-a.
 
Здравствуйте.
Написал программу (на С#), работает с картинками. К примеру инвертирует цвета в заданной области, рисует геометрические фигуры и т.п. (цель написания - изучение С# и методов работы с картинками на нем, небезопасный код и т.д.) В случае некорректного ввода координат точек (например, треугольник - 6 текст боксов, по одному на координату) следует сообщить об ошибке. Для этого использую ErrorProvider.
Код:

        private void textBox1_Validating(object sender, CancelEventArgs e)
          {
              try
              {
                      int tmp = Int32.Parse(textBox1.Text);
                      errorProvider1.SetError(textBox1, "");
              }
              catch
              {
                      errorProvider1.SetError(textBox1, "Вводите только целые числа");
              }
          }

но, так как текст боксов много и писать тот же самый код для каждого лишь меняя цифру в названии (textBox1,2,3...) плохой вариант. Есть какое-то хорошее решение?

З.Ы. Пользователь может вводить некорректные данные. Варианты без ErrorProvider-а прошу не предлогать.-) Спасибо за внимание.
З.З.Ы. Была мысль проводить проверку всех текст боксов при нажатии клавиши [Ок.] Пока остановился на ней.

LilLoco 05-11-2011 01:03 1788860

Если я правильно вас понял, то вам нужно сделать что - то вроде этого:
1. Сделать общее событие для обработки
Код:

private void textBox_Validating(object sender, CancelEventArgs e)
2. В событии привести "инициатора" к textbox:
Код:

TextBox txtBox = (TextBox)sender;
3. Далее в событии обрабатывать информацию из txtBox
4. Для каждого вашего текстбокса на событие validating повесить общее созданное событие.

Glorh 05-11-2011 10:21 1788960

Спасибо, вы все правильно поняли.
Ваш вариант мне нравиться и подходит. Я и хотел повесить один обработчик на все текстбоксы.

Вопрос можно считать закрытым.


Время: 17:15.

Время: 17:15.
© OSzone.net 2001-