Конвертировать дизайн WinForms в XML - PullRequest
1 голос
/ 13 сентября 2011

Я создаю общий механизм опросов, где конечные пользователи могут создавать и разрабатывать свои собственные опросы (включая дизайн пользовательского интерфейса). Я заинтересован в создании (или, возможно, даже покупке) собственного дизайнера WinForms, который сможет выводить дизайн в формате XML. Затем я сохранил бы XML в базе данных, и когда пользователи загрузят опрос, XML будет проанализирован, и форма будет динамически генерироваться на основе данных XML. Создание моего собственного конвертера C # в XML - вариант, но я бы хотел этого избежать, поскольку пользователям придется использовать Visual Studio, чтобы получить код WinForms, а затем запустить пользовательский инструмент для генерации вывода XML, что является довольно неуклюжим решением. (кроме того, я не могу заставить клиентов покупать VS).

Буду признателен, если кто-нибудь сможет указать мне правильное направление.

Спасибо!

Ответы [ 3 ]

1 голос
/ 13 сентября 2011

В проекте Mono имеется конструктор Winforms . Я не знаю, насколько легко было бы повторно использовать его в качестве компонента. Вот оно в действии:

Mono project winforms designer

Я не знаю, как бы вы пошли сериализовать вывод в XML и снова десериализовать его. Может быть, вы могли бы даже сохранить C # в вашей базе данных?

1 голос
/ 13 сентября 2011

Биты WinForms Designer предоставляются платформой .NET: поверхность разработки, набор инструментов, сетки свойств, ...

Эта статья MSDN и эта статья CodeProject должно помочь вам начать.

Конечно, это только начало истории.

Ваша вторая проблема - заставить дизайнера генерировать XML, а не код C # / VB.И последнее, но не менее важное: вам придется создавать форму во время выполнения, что обычно делается путем компиляции кода, сгенерированного дизайнером.Само собой разумеется, что компиляция XML - это другая история.

Конечно, было бы легче хранить код C # в вашей БД, а не какую-то модель XML.Затем вы можете программно скомпилировать его во время выполнения (нет необходимости устанавливать VS на клиентском компьютере. Достаточно времени выполнения .NET) и динамически создавать экземпляр класса формы.Кстати, выполняете ли вы код в конструкторе или во время выполнения, зависит только от вас.

Однако другие маршруты могут быть проще, например, предложение Ганса: InfoPath .

0 голосов
/ 13 сентября 2011
  1. Проверьте этот пост о том, как создавать XML-файлы в C #: Работа с XML

  2. Затем используйте sp_xml_preparedocument / sp_xml_removedocument в SQL длясоздавать / анализировать xml-файлы (для этого используйте хранимые процедуры )

  3. Проследуйте и используйте сгенерированный xml в своей winform (я предлагаю вам использовать LINQ to XML, чтобы сделатьthis)

Вероятно, самая сложная вещь, с которой вы здесь столкнетесь, - это создание XML-части и обход узлов XML, но, кроме этого, все будет очень просто.

Мы уже реализуем эту структуру / архитектуру на работе, но на веб-формах, а не на winforms.Но я думаю, что поток / логика одинакова.HTH.

Редактировать: Эта запись может помочь вам.Приветствия.

...