Мне требуется разработать среду, в которой пользователь сможет только рисовать формы, без редактирования кода. Я хотел бы использовать готовый, который есть в Visual Studio. Мною был поставлен Visual Studio SDK и начато чтение документации, откуда понял, что в Visual Studio Shell есть только базовый (Core) редактор, который не включает в себя дизайнер форм. Дизайнер же поставляется с VSPackage для конкретного языка (для c# -- свой дизайнер, для VB -- свой).
Подскажите, куда копать, если мне надо:
1) вызвать редактор форм и дать возможность пользователю разместить контролы;
2) получить и обработать информацию об расположенных контролах на форме.
Здравствуйте, Darky Darkov, Вы писали:
DD>Подскажите, куда копать, если мне надо: DD>1) вызвать редактор форм и дать возможность пользователю разместить контролы; DD>2) получить и обработать информацию об расположенных контролах на форме.
Все довольно просто. Не нужно использовать SDK. Того, что есть в поставке .NET вполне достаточно. Сам я наткнулся на это решение случайно, но оно зело мне понравилось. Вот пример. Он основан на использовании IDesignerHost. Очень простой и служит только для указания идеи. Это не готовый к "промышленному" использованию компонент. Как минимум в нем нет сериализации именений в какой бы то ни было форме. Надеюсь, подойдет.
Здравствуйте, muse, Вы писали:
M>Здравствуйте, Darky Darkov, Вы писали:
DD>>Подскажите, куда копать, если мне надо: DD>>1) вызвать редактор форм и дать возможность пользователю разместить контролы; DD>>2) получить и обработать информацию об расположенных контролах на форме.
M>Все довольно просто. Не нужно использовать SDK. Того, что есть в поставке .NET вполне достаточно. Сам я наткнулся на это решение случайно, но оно зело мне понравилось. Вот пример. Он основан на использовании IDesignerHost. Очень простой и служит только для указания идеи. Это не готовый к "промышленному" использованию компонент. Как минимум в нем нет сериализации именений в какой бы то ни было форме. Надеюсь, подойдет.
Спасибо, я уже видел похожий пример.
Раз уж мы об этом заговорили, подскажите, пожалуйста, как можно обойти ограничение максимального размера формы, которая реализует IDesignerHost (размер формы по ширине и высоте не может быть больше разрешения экрана плюс 12)?
Вон, UserControl можно сделать хоть 4000х2000, а форму -- нет.
Здравствуйте, Darky Darkov, Вы писали:
DD>Раз уж мы об этом заговорили, подскажите, пожалуйста, как можно обойти ограничение максимального размера формы, которая реализует IDesignerHost (размер формы по ширине и высоте не может быть больше разрешения экрана плюс 12)? DD>Вон, UserControl можно сделать хоть 4000х2000, а форму -- нет.
Предполагается что форма — Окно с большой буквы, не просто window с хэндлом, а именно окошко, с заголовком, кнопками раскрытия, сворачивания. Такие окна не могут быть больше текущего расширения окна. 12 пискелей — системный бордер, неклиентская часть окна. Там может быть все что угодно в зависимости от ОС. А UserControl — это window, который может скроллироваться внутри родительского контрола. И ограничение на его размер все таки есть, кажется что-то около 32,000 пикселей. Сам я этот пример не разбирал, только встретил и сохранил до лучших времен. Может быть засунуть IDesignerHost так же в UserControl? И прокручивать его. Гляньте на реализацию хоста в VS. Там тоже используется скроллинг, когда форточка не влезает в дозволенные рамки.