Powershell использует значение ErrorProvider для окончательной проверки формы

С Powershell у меня есть форма Windows, динамически генерирующая несколько текстовых полей. Я использую проверку для каждого текстового поля, а затем использую ErrorProvider, чтобы предупредить, если проверка не удалась.

Это нормально работает для отображения ошибки '!' уведомление. Есть ли способ проверить, сколько ошибок осталось?

Мой псевдокод сказал бы:

  1. На "ОК" нажмите
  2. Цикл через каждый TextBox
  3. Проверить каждый TextBox
  4. Ошибка в случае неудачи / Сбросить ошибку в случае успешного прохождения
  5. Возвращение
  6. Если ошибок больше нет, закройте форму

Или мне нужно поддерживать отдельную логику, чтобы видеть, когда ошибки были исправлены? (Проверка ErrorProvider ниже - это просто заполнитель, я понятия не имею, что туда поместить!)

$ButtonOK.Add_Click({

    $objectList | where {$_ -is [System.Windows.Forms.TextBox] } | foreach-object {

    Validate-Input $_

    }

    if ($ErrorProvider -eq $null) { #This is where I'm stuck
        $Form.Close()
    }

})

person mhouston100    schedule 27.07.2015    source источник


Ответы (1)


Итак, судя по ответу здесь, нет встроенного способа ссылки количество оставшихся ошибок. Воспользовавшись советом этого потока и портировав его на Powershell, я реализовал следующее:

  1. Определите хеш-таблицу для хранения состояния ошибки для каждого объекта
  2. При установке или сбросе ошибки используйте следующее:

    Установить ошибку: $ errTable.set_item ("$ ($ curTB.name)", "1")

    Удаление ошибки: $ errTable.remove ("$ ($ curTB.name)")

  3. Используйте следующий код в разделе add_click:

    Если ($ errTable.count -le "0") {$ form.close ()}

Кажется, работает хорошо и довольно сокращенно.

person mhouston100    schedule 27.07.2015