Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление не существующих свойств в PropertyGrid. 
:(
    Опции темы
Zigl
Дата 25.2.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 3.9.2007
Где: г. Павлодар, Каза хстан

Репутация: нет
Всего: нет



Постараюсь объяснить что мне нужно.  
Пишу редактор для игрушки, все свойства объекта отображаются в PropertyGrid. Есть структурка Vector3. Сразу поясню что исходников у меня нету, использую только сборки. Хочу сделать чтобы данные этого вектора отображались  как в Visual Studio поле типа Size например, т.е. что-то типа этого
Position    X: 10, Y: 20, Z: 30
     X    10
     Y    20
     Z    30
Т.е. эта строчка открывается,  а там еще три. Но проблема в том что структурка Vector3 не содержит эти свойства, там есть но они левые, а компоненты x,y,z существуют как просто открытые поля. 
Еще прикол в том, что редактор делается на основе игрового движка(писан мною), в котором есть много различных классов объектов в которых используется Vector3 типа Position, Size и тд. Пока приходится делать так, в редакторе наследую класс через partial (т.е. продолжаю)  и в нем перекрываю эти свойства которые возвращают уже мою структурку Vec3, в которой есть эти три свойства X,Y,Z и в нем реализована конвертация (implicit)  из Vector3 в Vec3 и обратно. И к свойствам Position применял атрибут Vector3TypeConverter, который преобразовывал значение вектора в строку и обратно, а так как там не было больше других свойств то три свойства X,Y,Z отображались и все было прекрасно.
Но получается слишком много одного и тогоже кода.
Ковырялся с TypeConverter'ом наследовал класс от ExpandableObjectConverter, реализовывал там преобразование в строку и обратно, чтобы сделать строчку X: 10, Y: 20, Z: 30, потом в перегруженном методе GetProperties создавал новые свойства, такие 
PropertyDescriptor pd0 = TypeDescriptor.CreateProperty(typeof(Vector3), "X", typeof(float), attributes);
PropertyDescriptor pd1 = TypeDescriptor.CreateProperty(typeof(Vector3), "Y", typeof(float), attributes);
PropertyDescriptor pd2 = TypeDescriptor.CreateProperty(typeof(Vector3), "Z", typeof(float), attributes);
и возвращал их, в PropertyGrid они конечно повлялись, но вместо всяких значений было написанно "не задана ссылка". Вот я и не знаю как связать эти новые свойства с данными вектора.
Может можно каким-нибудь образом сувать в PropertyGrid структуру Vec3, хотя на самом деле в свойстве используется Vector3, просто Vec3 сам будет конвертироваться в Vector3.

Может кто-нибудь сталкивался.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0516 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.