Проверить заполнение форм Windows - PullRequest
0 голосов
/ 22 ноября 2011

Я пытаюсь проверить, завершена ли вся необходимая информация в пользовательской форме Windows, прежде чем выполнять код в конце.

Существуют ли рекомендуемые способы проверки заполнения оконных форм?

Кажется, что если я перечисляю каждый элемент управления, а затем проверяю его, мой код выглядит раздутым, поскольку он работает для примерно 40 элементов управления.

например.

if(!check_1(varX_TextBox))
    return false;

if(!check_2(varY_ComboBox))
    return false;

...

if(!check_40(varAA_numericUpDown))
    return false;

Ответы [ 5 ]

2 голосов
/ 22 ноября 2011

Существует много разных способов достижения этого, и в конечном итоге все сводится к вашим личным предпочтениям в отношении того, что вы используете. При этом два хороших места для начала работы с Windows Forms - это события проверки, которые являются частью инфраструктуры Windows Forms (см. здесь ) и Корпоративная библиотека Блок приложения проверки .

События validaiton Validating и Validated дают вам хуки для простого подключения проверки вашего элемента управления, и большинство элементов управления Windows Forms полностью интегрируются с этой средой. Вы можете запустить эту проверку в разное время (например, закрытие формы или когда элемент управления теряет фокус).

Блок приложения проверки очень полезен, если вы используете модель домена в своем проекте. Он позволяет вам украшать свойства классов требованиями проверки, а затем предоставляет классы, которые помогают в проверке этих классов и сообщении о любых ошибках.

2 голосов
/ 22 ноября 2011

Как и предлагалось другое решение, вы можете пойти с ними или вы можете сделать свою собственную функцию в соответствии со своими требованиями.

Позвольте мне привести вам пример.
Предположим, форма содержит более 15 текстовых полей, из них 10 обязательных.Поэтому установите сообщение в свойство тега текстового поля подобно "поле xyz обязательно" .

Теперь в форме отправки вы можете вызвать что-то вроде ниже

    foreach (Control c in this.Controls)
    {
        //All text boxes validate in one if statement
        if (c is TextBox && c.Tag.ToString() != string.Empty)
        {
            MessageBox.Show(c.Tag.ToString());
        }
    }

Это всего лишь пример, который вы можете охватить всеми другими элементами управления типа, такими как выпадающий список, флажки и т. Д.
Теперь о том, как вы используете проверку.Но вы также можете сделать что-то подобное,

0 голосов
/ 22 ноября 2011

Нет другого «волшебного» способа обойти то, что вы пытаетесь сделать.Каждое поле, если оно имеет свои требования, будет иметь фрагмент кода, который выполняет проверку для этого поля.

То, что вы сможете выбрать, это варианты того, как «добавить» эту проверку, отсканированную кполе:

  • OnValidate событие каждого элемента управления
  • таймер, который будет проверять все элементы управления в форме, каждый со своим собственным фрагментом
  • OnChangeсобытие каждого элемента управления
  • OnOK событие для кнопки «принять» в форме, которое будет проходить через каждый элемент управления и проверять его

Мой любимый - ни один из вышеперечисленных,так как я очень ориентирован на привязку, поэтому у меня есть класс для моих данных, привязал этот класс к элементам управления формы и, нажав кнопку «принять», я позволил моему классу выполнить проверку DATA.

0 голосов
/ 22 ноября 2011
  1. Один из способов сделать это - создать класс проверки, содержащий все свойства, которые необходимо проверить.Измените свойства этого класса, когда пользователь изменяет текстовое поле или флажок и т. Д., А затем ищите изменения в классе.Вам нужно два состояния: Действительное состояние и Измененное состояние и всегда сравнивайте Измененное состояние с действительным состоянием.Если оба состояния одинаковы, это означает, что все проверки и проверки в форме выполняются по вашему желанию.
0 голосов
/ 22 ноября 2011

Вы можете использовать элементы управления win-form или реализовать какой-либо другой механизм проверки, например, реализовать IDataErrorInfo в ваших моделях представления (докладчиках).

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