Как добавить проверку свойств в PropertyGrid?

Имеется ли стандартный механизм проверки значений свойств в PropertyGrid?
На данный момент добавляю обработчик на событие PropertyValueChanged и выглядит это более чем коряво:

private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
{
    switch (e.ChangedItem.PropertyDescriptor.Name)
    {
        case nameof(MyType.Name):
            string newName = (string)e.ChangedItem.Value;
            if (!isValideName(newName))
            {
                ShowError("The \"Name\" property is invalid!");
                e.ChangedItem.PropertyDescriptor.SetValue(propertyGrid1.SelectedObject, e.OldValue);
            }
            break;
        default: break;
    }
}

При таком подходе событие не будет срабатывать для "вложенных" редакторов.
Ещё можно выбрасывать исключения в сеттерах свойств. В этом случае PropertyGrid сам будет отображать ошибки:

Ошибка при выбрасывании исключения в сеттерах PropertyGrid

В идеале хотелось бы просто декорировать свойства атрибутами DataAnnotations (напр. Range, Required, RegularExpression) и на их основе выполнять проверку.
Как выполнить проверку свойств в PropertyGrid?


Ответы (0 шт):