Проверка WinForm UI - PullRequest
       29

Проверка WinForm UI

42 голосов
/ 20 апреля 2009

Мне нужно реализовать проверку ввода во всем приложении winform. Существует много различных форм, в которые можно вводить данные, и я бы не хотел контролировать элемент управления посредством формы и создавать isValid и т. Д. Для каждого элемента. Как другие справились с этим?

Я вижу, что большинство связанных публикаций посвящено веб-приложениям и / или упоминается Блок приложения для проверки библиотеки предприятия . Теперь я признаю, что я не исследовал ELVAB, но он кажется излишним для того, что мне нужно. Моя текущая мысль - написать библиотеку классов с различными требованиями и передать ей элемент управления в качестве параметра. У меня уже есть библиотека функций RegEx для таких вещей, как isValidZipCode и так далее, поэтому я могу начать с нее.

Я хотел бы иметь кнопку Validate, которая onClick циклически перебирает все элементы управления на этой странице формы и выполняет необходимую проверку. Как мне это сделать?

Ответы [ 11 ]

1 голос
/ 20 апреля 2009

Циклический контроль может работать, но он подвержен ошибкам. Я работал над проектом, который использовал эту технику (если это был проект Delphi, а не C #), и он работал как ожидалось, но было очень трудно обновить, если элемент управления был добавлен или изменен. Это могло быть исправимо. Я не уверен.

В любом случае это работало путем создания отдельного обработчика событий, который затем присоединялся к каждому элементу управления. Затем обработчик будет использовать RTTI для определения типа элемента управления. Затем он использовал бы свойство name элемента управления в большом операторе select, чтобы найти код проверки для запуска. Если проверка не удалась, пользователю было отправлено сообщение об ошибке, и элемент управления получил фокус. Чтобы сделать вещи более сложными, форма была разделена на несколько вкладок, и нужная вкладка должна была быть видимой, чтобы ее дочерний элемент управления был в фокусе.

Так вот мой опыт.

Я бы предпочел использовать шаблон проектирования Passive View, чтобы удалить все бизнес-правила из формы и перенести их в класс Presenter. В зависимости от состояния вашей формы, это может быть больше работы, чем ваше желание инвестировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...