![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| Serjeo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 30.7.2007 Репутация: нет Всего: нет |
Есть некоторый собственный компонент:
public partial class SimpleComponent : Component { ... } и есть произвольная форма куда я из toolbox-а перекидываю значок собственного компонента. Что нужно указать в атрибутах, чтобы при выделении этого значка на форме я мог редактировать все свойства собственного компонента в окне Properties? Что вообще нужно написать? |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 2 Всего: 36 |
да ничего особого можно не указывать, просто объявить свойства публичными - у меня вполне так работает
а по собственно дизайнерам я тут написал примерчик.. |
|||
|
||||
| Serjeo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 30.7.2007 Репутация: нет Всего: нет |
Возможно я не могу понять простого. Если не трудно, объясните. Есть собственный компонент в *.dll исполнении. Внутри есть два свойства с простым типом и один с вложенным собственнымю. Я перетаскиваю этот компонент из toolbox-а на вновь созданную форму. В окне Properties первые два свойства могу изменять, а вложенное нет. В чем причина. Как мне установить дизайнер для этого свойства?. Вот код компонента:
|
|||
|
||||
| mihryak |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 2 Всего: 36 |
в примерчике это есть ;) Это сообщение отредактировал(а) mihryak - 30.7.2007, 14:36 |
||||
|
|||||
| Serjeo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 30.7.2007 Репутация: нет Всего: нет |
PS: Помогите добавить дизайнер к компоненту:. Я сделал все как описано, но свойство Property3 в окне Properties все равно неактивно и там написано: My.Components.SimpleComponent+PropertyType. Что нужно написать, чтобы можно было редактировать это свойство. Заранее спасибо! |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 2 Всего: 36 |
а ребилд не помогает?
ПС. это странно, но у меня теперь и исходный вариант нормально редактируется Присоединённый файл ( Кол-во скачиваний: 9 )
property.PNG 3,80 Kb |
|||
|
||||
| Serjeo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 30.7.2007 Репутация: нет Всего: нет |
Все работает. Спасибо огромное! |
|||
|
||||
| Serjeo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 30.7.2007 Репутация: нет Всего: нет |
А как сделать так, чтобы можно было редактировать свойства своего компонента не через окно Properties, а используя свою новую форму? Заранее спасибо!
|
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 2 Всего: 36 |
Serjeo, вот только честно, ты примерчик скачал? там есть редактирование и через PropertyGrid, и через свою форму.
|
|||
|
||||
| Serjeo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 30.7.2007 Репутация: нет Всего: нет |
Я имел ввиду редактирование свойств в Design-time. Там разве для этого?
|
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 2 Всего: 36 |
Может, я как-то не так понял, но в Design-time, если не раскрывать свойство Properties моего контрола, а просто кликнуть, то откроется форма для редактирования. В Run-time то же самое произойдёт, если на форме в компоненте PropertiesGrid выбрать это же свойство.
Ну а в общем, нужно написать наследника для UITypeEditor и аттрибутом [Editor(typeof(MyPropertiesEditor), typeof(UITypeEditor))] задать его свойству. ------- а, понял, похоже. PropertiesGrid - это не только контрол на моей форме в примере, но и редактор свойств в самой студии Это сообщение отредактировал(а) mihryak - 31.7.2007, 11:15 |
|||
|
||||
| Serjeo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 30.7.2007 Репутация: нет Всего: нет |
Все, я разобрался. В Properties моего компонента появляется строка Property1, напротив которой кнопочка с тремя точками. При нажатии на нее появляется моя форма для редактирования этого компонента и все это в Design-time. А вот теперь не могу разобраться почему все то, что я изменил не сохраняется после повторного закрытия открытия этой формы. Здесь нужно что-то сериализировать?
|
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 2 Всего: 36 |
Serjeo, без кода сложно сказать
Есть подозрение, что неправильно написал метод EditValue. Если в форме были выставлены новые значения и свойство имеет сложный тип (собственный класс), то нужно сформировать новый экземпляр этого класса и возвратить его в этом методе. Если не сделать этого, возвращая тот же экземпляр, но с изменёнными внутренними свойствами, то студия сравнит сами экземпляры, увидит, что это один и тот же, и не предпримет никаких действий. Второе подозрение - при создании формы её собственные контролы не конфигурятся текущим значением редактируемого свойства. Это сообщение отредактировал(а) mihryak - 1.8.2007, 09:35 |
|||
|
||||
| Serjeo |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 30.7.2007 Репутация: нет Всего: нет |
Вот код:
а это участок кода компонента:
Может нужна сериализация в дизайнере формы, куда я перетаскиваю компонент:
|
||||||
|
|||||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |