WinForms - Пользовательский редактор XML

Я создал небольшое мини-веб-приложение на основе HTML/JavaScript, которое считывает данные из файла XML.

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

Мини-веб-приложение позволяет покупателю, который приобретает удаленный стартер, выбрать марку, модель и год своего автомобиля, а также список дополнительных компонентов, необходимых для установки. Эти данные представлены в XML как <vehicle> элемент с атрибутами, представляющими марку, модель, год, а также атрибуты для каждого из типов компонентов.

Требования к редактору:

  • Отображать записи транспортных средств в сетке
  • Разрешить автозаполнение в каждом столбце на основе уже введенных значений
  • Разрешить фильтрацию строк на основе любой комбинации столбцов

Я пробовал следующее:

  • Использование DataGridView и привязки данных, но привязка данных / наборы данных / и т. Д., Кажется, не хотят легко играть с файлами XML в качестве источника данных. Я сдался после борьбы с этим в течение нескольких часов
  • Создание собственного пользовательского элемента управления "строка" и вставка экземпляра для каждого элемента в элемент управления Panel. Поскольку существует несколько сотен записей о транспортных средствах, это не стартер по соображениям производительности.

Я вообще веб-парень, так что этот материал для WinForms для меня не обозначен. Какой самый простой способ выполнить требования для этого редактора?

2 ответа

Вместо того, чтобы создавать UserControl, который включает в себя большое количество меньших UserControl для представления каждого элемента, я думаю, что самый разумный подход заключается в инкапсуляции логики для визуального представления элементов в виде классов, которые отвечают за отображение их данных на одной графической поверхности (в отличие от для инкапсуляции логики в UserControls).

Поскольку вы уже создали элемент управления "строка" (я предполагаю, что с возможностями редактирования), вы все равно можете использовать его, создав его экземпляр и "переместив" его над своим элементом управления, когда пользователь щелкнет по нему.

Это более ранний ответ на несколько похожий вопрос:

Нужна помощь в создании элемента управления для отображения данных

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

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

В этой статье рассматриваются типизированные наборы данных и DataGridView, а также приведены отличные примеры фильтрации входных данных.

Наконец, вы можете взглянуть на бесплатный набор инструментов Krypton. Их элементы управления, как правило, более мощные, чем эквивалентные готовые Winforms, которые они заменяют. Я полагаю, что они могут иметь автозаполнение реализовано для DataGridView (они делают для TextBox точно). Если вы воспользуетесь им, вы фактически загрузите как бесплатный инструментарий, так и коммерческие инструменты. Убедитесь, что вы ссылаетесь только на DLL инструментария, если только вы не собираетесь приобретать их полный пакет.

Другие вопросы по тегам