Страница: 1 |
Вопрос: Свойства новых контролов | Добавлено: 23.03.04 15:09 |
Автор вопроса: ![]() |
Меня интересует как к новому контролу добавить свойство, чтоб его возможные значения представлялись в виде выпадающего списка в окне Properties. |
Ответы | Всего ответов: 6 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ICQ: 280044491 Вопросов: 43 Ответов: 227 |
Профиль | Цитата | #1 | Добавлено: 23.03.04 18:46 |
так организуй это свойство в виде enum |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 7 Ответов: 8 |
Профиль | Цитата | #2 | Добавлено: 24.03.04 16:40 |
А как насчет запуска окна выбора рисунка из окна свойств, как у стандартных контролов? |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ICQ: 280044491 Вопросов: 43 Ответов: 227 |
Профиль | Цитата | #3 | Добавлено: 24.03.04 17:53 |
по-моему для этого достаточно что б свойсво было определенного типа например Icon, Image.. а вообще можна определять свои собственные обработчики значений свойств, но как это точно сделать не скажу, но вроде надо копать в сторону атрибутов и вообще метаданных... |
Номер ответа: 4 Автор ответа: ![]() ![]() Вопросов: 5 Ответов: 100 |
Профиль | Цитата | #4 | Добавлено: 25.03.04 10:23 |
Присоединюсь к разговору. Пробовал я как-то копать в этом направлении, но не докопался. Проблема была похожая - как показывать в этом окне свойства своих типов данных. У меня все работало в режиме read-only, т.е. все серое. Аналогично и со списками. Открывается стандартное окно для редактирования коллекции, но при нажатии Add вываливается сообщение, мол нет подходящего редактора, или что-то такое... В общем, так и забросил. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ICQ: 280044491 Вопросов: 43 Ответов: 227 |
Профиль | Цитата | #5 | Добавлено: 25.03.04 15:47 |
вот ссылочка http://rsdn.ru/article/dotnet/dotnetcontrols.xml ищите раздел Редактор типов (UITypeEditor) |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 15 Ответов: 72 |
Профиль | Цитата | #6 | Добавлено: 26.03.04 03:24 |
Не все, но что знаю сам... Берешь контрол PropertyGrid Создаешь класс, например CVisualisation, потом чтобы PropertyGrid увидел все свойства класса надо сделать следующее: PropertyGrid.SelectedObject = New CVisualisation, ну а чтобы в PropertyGrid хоть что-то нарисовалось надо в теле класса написать, например: Private _ColorStringListAlter As Color = Color.Empty ' Цвет альтернативной строки списков = по умолчанию Color.Empty - ничего Потом само свойство: <CategoryAttribute("Списки данных"), _ Browsable(True), _ [ReadOnly](False), _ BindableAttribute(False), _ DesignOnly(False), _ DisplayName("Цвет альтернативной строки"), _ DescriptionAttribute("Настройка цвета строк списков представления данных. Определяет цвет альтернативной строки списков.")> _ Public Property ColorStringListAlter() As Color Get Return _ColorStringListAlter End Get Set(ByVal Value As Color) _ColorStringListAlter = Value End Set End Property перед, собственно привычным написанием свойства идут его <Атрибуты>, это все то, что поможет выстроить PropertyGrid, и указать в Браузере объектов типа подсказки описания и т.д. Далее... Тип свойства объявлен Color - думать ни чего не надо в PropertyGrid будет подбор цвета, то же самое и с Font, Icon, Image, Integer, String, Enum (в смысле пользовательское перечисление) с этим без проблем, а вот с атрибутами (по крайней мере в моем примере) будет не все гладко. В моем примере указан атрибут - DisplayName("Цвет альтернативной строки"), _ - это не стандартный атрибут, это для того чтобы в PropertyGrid имена свойств писались не так, как объявлены в классе (в моем примере - ColorStringListAlter), а как я захочу - в данном случае атрибут DisplayName это укажет. Но чтобы DisplayName заработал надо написать класс обертку и ваш класс обернуть в класс обертку. Вот и все. |
Страница: 1 |
|