Отключить всю форму от поставщика ошибок - PullRequest
0 голосов
/ 01 февраля 2012

В форме Windows у меня есть некоторые элементы управления и UserControl.У меня есть ErrorProvider в UserControl.Я хочу прекратить редактирование всех элементов управления в форме, если в userControl произошла ошибка.Есть ли способ сделать это?

Я использую errorProvider.BindToCustomDataAndErrors (..)

Ответы [ 2 ]

1 голос
/ 02 февраля 2012
  1. Предоставьте свойство пользовательскому элементу управления, чтобы указать, есть ли в нем какие-либо ошибки (например, путем итерации набора элементов управления и проверки errorProvider.GetError(control)

  2. Проверьте вашу собственность и отключите все, что вам нужно

    if (! MyUserControl.IsValid) { someContainerControl.Enabled = false; }

  3. Если вам необходимо получать уведомления в режиме реального времени, объявите событие в пользовательском элементе управления IsValidChanged, присоедините его и отключите ваши элементы управления при его срабатывании, когда IsValid имеет значение false.

1 голос
/ 01 февраля 2012

Вы можете запретить пользователю перемещать фокус из UserControl с помощью события Validating. Например:

    protected override void OnValidating(CancelEventArgs e) {
        foreach (Control ctl in this.Controls) {
            if (errorProvider1.GetError(ctl) != "") e.Cancel = true;
        }
        base.OnValidating(e);
    }

Использование ErrorProvider.GetError (), как это не идеально, хотя это может работать. Возможно, вы захотите сохранить свой собственный список ошибок проверки.

...