Как добавить всплывающую подсказку для выбора перечисления в Propertygrid в C #?

Я только что узнал, как использовать основные функции PropertyGrid, и обнаружил, что некоторые из моих констант перечисления не очень понятны. Возможно ли, что, когда пользователь откроет список всех констант перечисления, появится всплывающая подсказка для той константы, на которую он наводит указатель мыши?

Например, если у меня есть свойство SomeEnum в PropertyGrid, а его значения - Enum1, Enum2, Enum3. Когда пользователь хочет изменить значение свойства, он опускает список и наводит курсор на Enum1, появляется всплывающая подсказка с сообщением «Это Enum1» и так далее.


person TreeTree    schedule 02.09.2011    source источник


Ответы (2)


Вы можете изменить стандартную функцию преобразования в строку перечисления, как описано в этих документах S.O. сообщения:

Перечисления строк C #

C #: как использовать преобразователь типов для локализации перечислений < / а>

или эта статья MSDN:

http://msdn.microsoft.com/en-us/library/system.componentmodel.typeconverter%28VS.80%29.aspx

person Timothy Khouri    schedule 02.09.2011

Я не верю, что есть простой способ сделать то, о чем вы просите, с PropertyGrid. На самом деле вам следует переименовать значения перечисления, чтобы более четко выразить их цели; Это дает дополнительное преимущество, делая ваш исходный код более понятным.

Если вам нужно указать дополнительную информацию относительно определенного свойства, которое устанавливается с помощью PropertyGrid, вы можете сделать это, пометив его с помощью DescriptionAttribute:

[Description("This is my description of this property")]
public int Foo { get; set; }

Если вы действительно настроены сохранять свои значения перечисления такими, какие они есть, вы потенциально можете реализовать TypeConverter и пометить каждое свойство, которое использует конкретное перечисление, с помощью TypeConverterAttribute; это позволит вам явно указать преобразование между значениями перечисления и текстом, отображаемым в PropertyGrid. Дополнительные сведения см. В этой статье MSDN.

person Cole Campbell    schedule 02.09.2011