Как добавить проверку свойств в 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 сам будет отображать ошибки:
В идеале хотелось бы просто декорировать свойства атрибутами DataAnnotations (напр. Range, Required, RegularExpression) и на их основе выполнять проверку.
Как выполнить проверку свойств в PropertyGrid?
