Как добавить всплывающую подсказку для выбора перечисления в таблице свойств в C #? - PullRequest
1 голос
/ 02 сентября 2011

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

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

Ответы [ 2 ]

0 голосов
/ 02 сентября 2011

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

C # Строковые перечисления

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

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

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

0 голосов
/ 02 сентября 2011

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

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

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

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

...