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 инструментария, если только вы не собираетесь приобретать их полный пакет.