У меня есть класс с именем EnumFlagsEditor
, который наследуется от UITypeEditor для разработки редактора типов, способного редактировать Enum с FlagsAttribute , используя пользовательский CheckedListBox , а также возможность редактировать обычный Enum в том же пользовательском редакторе.
В переопределенном методе UITypeEditor.GetEditStyle я проверяю, имеет ли исходный Enum набор FlagsAttribute
.Если тип Enum имеет этот класс атрибутов, тогда я возвращаю UITypeEditorEditStyle.DropDown
, чтобы отобразить мой пользовательский CheckedListBox
.Если его нет, я возвращаю UITypeEditorEditStyle.Modal
, а .NET Framework делает все остальное, используя редактор по умолчанию для редактирования Enums, используя значение по умолчанию ComboBox
для отображения и выбора значений / имен Enum.
Проблема в том, чтовстроенный редактор по умолчанию в библиотеке классов .NET Framework для редактирования обычного Enum, я заметил, что он ищет имя Enum со значением 0, чтобы отобразить его как значение по умолчанию, и, если он не находит его, выдает System.ArgumentException
ине отображает значение по умолчанию.
Взять в качестве примера этот Enum:
public enum TestEnum {
a = 1,
b = 2,
c = 4
}
. В редакторе сетки свойств будет выброшено System.ArgumentException
, и значение по умолчанию не будет отображаться, так как редактор .NET Framework по умолчанию дляa Enum ожидает значение 0 внутри Enum ...
Теперь, используя Enum System.DayOfWeek , чтобы увидетьразница:
DayOfWeek.Sunday
(0) выбрана по умолчанию, поэтому выбрасывается любое исключение.
Затем в моемEnumFlagsEditor
класс Я хотел бы предотвратить такое поведение.Я хочу, чтобы редактор показывал значение по умолчанию в сетке свойств моего редактора.Меня не волнует исключение, но я хотел бы отобразить определенное, начальное значение ..., а точнее, наименьшее определенное значение в исходном Enum.
Как я могу это сделать ?.