Стартовая страница › Форумы › Разработка и интеграция › Xml в TreeView со связью данных
- В этой теме 52 ответа, 4 участника, последнее обновление 1 месяц назад сделано JurasskPark.
-
АвторСообщения
-
07.06.2024 в 10:17 #32953manjey73Участник
Вроде простая задачка, но поиском ничего толкового не нашел.
Нашел код с рекурсией но… НО-О-О один мой файлик считывает ШЕСТЬ минут…про связь данных (Binding) я вообще молчу, не нахожу толковых примеров для WinForms вообще. Облизнулся на Студию1 (там по аглицки) но стоит денег… Что там внутри даже не представляю.
Кому нужен будет файлик для примера, на котором тестю, выложу куда-нибудь, если интересно.
может есть у кого наработки для произвольных файлов xml ??? то есть чтобы не создавать классов сериализации и т.д.
07.06.2024 в 13:19 #32954MikhailМодераторТо есть нужно по XML файлу заполнить TreeView?
При заполнении TreeView нужно использовать методы BeginUpdate и EndUpdate.07.06.2024 в 13:51 #32956manjey73УчастникДа, заполнить TreeView.
Нашел где зарыта собака такой скорости, это чтение атрибутов xml файла в виде текстовой строки.
В большинстве примеров используется такой подход. Сейчас атрибуты пихаю в Node.Tag и достаточно быстро все.за пару секунд читает. Но проблема в том, что видел реализации в ПО, где этот же файл открывается в дереве, в котором присутствуют в том числе и имена Атрибутов в дереве.
Вот как так-то?08.06.2024 в 12:48 #32957JurasskParkУчастник08.06.2024 в 18:48 #32958manjey73УчастникЯ боюсь это не то. Ибо там типизированные данные в принципе, разница всего лишь в количестве.
Если xml файл строго один, прекрасно. Но если xml файлы разные? тут только рекурсия и ничто иное. Других путей вроде нет, когда неизвестно количество.Потому что для сериализации мы создаем типизированные данные (классы) но это уже потом.
08.06.2024 в 21:34 #32959manjey73УчастникИнтересный момент, 1.80 секунды это измерение секундомером при подключении по RDP
Сегодня запустил будучи дома, мой файл открыло и построило дерево меньше секунды.
Мне осталось только правильно дерево нодов TreeView построить, а то сейчас чуть некорректно оно строится. Не соответствует Xml файлу.- Этот ответ был изменен 5 месяцев назад от manjey73.
10.06.2024 в 12:13 #32974MikhailМодераторНужно найти, в каком классе и методе тормозит. В VS есть средства для этого относительно простые. Ссылка
10.06.2024 в 13:05 #32977manjey73УчастникТормозит обычно на текстовых вещах, а, еще когда при тестировании выводишь в ListBox например.
В принципе чтение моего файла за 0,5-0,7 секунд для меня приемлемо.
Там строк 900 то из мне нужных, остальные занимают меньше.Я собственно код чтения уже почти причесал… Теперь запись обратно в xml осталась 🙂
Ну и украшательства с редактированием, но это уже интерфейсная часть.а на маленьких файлах конфигурации в моих драйверах так вообще 30-40 мсек. Что вообще незаметно.
- Этот ответ был изменен 5 месяцев назад от manjey73.
10.06.2024 в 13:20 #32979manjey73УчастникПосле добавления чтения комментариев стало 1,3-1,4 секунды. В принципе тоже приемлемо.
Не минуты же.10.06.2024 в 13:29 #32980manjey73УчастникВот пример открытия шаблона Modbus. Вроде и структуру поймал 🙂
10.06.2024 в 13:31 #32981manjey73УчастникСмысл не привязывать чтение xml файла к конкретному случаю, чтобы использовать код один и тот же.
А уже тратить время только на красивости. иконки тех или иных Нодов уже в интерфейсной части.11.06.2024 в 13:40 #32982MikhailМодераторКак будет использоваться построенное дерево документа?
11.06.2024 в 17:13 #32983manjey73УчастникДля настройки параметров драйверов во View.
Смысл упростить немного создание меню, когда нужно иметь дерево. Сам драйвер (Logic) при этом может использовать уже сериализацию в классы, а можно так же использовать этот же код. а, блин, в драйвере нет же WinForms….
Вариантов связи для WindowsForms я так и не нашел. Чтобы меняя что-то в TreeView сразу менялось в xml. Целые танцы с бубном какие-то…
- Этот ответ был изменен 5 месяцев назад от manjey73.
12.06.2024 в 15:37 #32989MikhailМодераторПридётся обрабатывать события на действия пользователя, чтобы отображать изменения в дереве и менять XML.
Вы не пробовали использовать для своего драйвера универсальный интерфейс, который есть например, в драйвере MQTT?
12.06.2024 в 16:29 #32990manjey73УчастникMQTT не копал ещё.
Понятие универсальности ведь относительны.
Цель собственно какая?
Например для определенного драйвера я руками делаю xml для конфигурации, создаю под него список классов для сериализации. Вот потом чтобы не работать с этими же классами во View и хочу сделать универсальное решение в случае использования древовидного варианта настроек. Чтобы вставил готовый код и уже можно было настраивать. А не писать под каждый определенный драйвер большую часть снова. И типа в продакшн ?
А уже потом пилить красоту с иконками, окнами и т.д. на этой основе уже под определенный драйвер.
Опять же, идея приглашать в соавторство, кто красоту наведёт ? -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.