Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Загрузка данных из файла в TreeView


Автор: Nudnik 31.7.2008, 16:01
Для создания интерфейса использую визуальный редактор VS2008. Создал свой компонент, который унаследован от TreeView и попросту в InitializeComponent() добавил вызов своего метода FillWithData(), который грузит информацию из xml файла в дерево. Теперь у меня в визуальном редакторе перестала отображаться форма и пишет, что невозможно найти этот xml файл и тому подобное. Я нажал Ignore, но потом вообще всё стало криво отображаться. Мне это не понравилось smile Я решил попробовать иным способом, удалил вызов FillWithData() из InitializeComponent() и сделал заполнение дерева по событию загрузки формы. Работает визуальный редактор и сама программа.

У меня вопрос, как правильнее поступать в таких ситуациях? Как нужно правильнее загружать изначальные данные в интерфейс во время начальной загрузке последнего. Извиняюсь за такой глупый вопрос, это просто мой первый опыт работы с WinForms вообще. Спасибо.

Автор: amarenkov 31.7.2008, 16:16
Я так понимаю, что когда вы добавили вызов своей функции в InitializeComponent() вы не проверяли, в каком режиме находится компонент: в режими проектирования или выполнения. 

Он в режиме проектирования попытался подгрузить ваш файл, и не нашел его. Поэтому посыпался с исключениями.

Решения два:
- проверять, в каком режиме находится компонент (в зависимости от этого грузить/не грузить файл)
- обрабатывать ошибки доступа к файлу

А лучше, и то и другое. 

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

Автор: Wanderer2019 31.7.2008, 17:08
Я бы определил свойство внутри контрола, которому присвавался бы пусть к подгружаемому xml файлу. При присвоении значения грузил бы данные в контрол, предварительно проведя какую нибудь валидацию данных (с помощью схемы например).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)