Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
27 / 27 / 9
Регистрация: 21.04.2015
Сообщений: 704

Как к узлам дерева прикрутить структуру struct Card?

30.06.2016, 00:12. Показов 576. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сериализовать дерево тривью чтобы сохранить его в файл и потом загрузить из файла? Где можно посмотреть хорошие примеры?

Как скрыть узел в тривью? Не нашёл где это свойство

Как к узлам дерева прикрутить структуру? struct Card { int n; string s1; ... }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.06.2016, 00:12
Ответы с готовыми решениями:

Как правильно создать структуру (struct)?
Всем добрый день, Мне нужно просто создать струкутру, в который будет 3 значения: ip, login, password. Далее я ее буду использовать,...

Как передать в функцию структуру в типе void и вернуть в struct
Ну есть структура: struct STransmitCmdStruct { SOCKET Client; Popen po; }TransmitCmdStruct; И функция unsigned...

Как сохранить структуру дерева?
Здравствуйте, такой вопрос: программирую на Visual Basic .NET, у меня есть дерево (TreeView) я в него посредством drag&drop ввожу...

7
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
30.06.2016, 00:26
Ваю,
сериализация:
C#
1
2
3
4
5
6
7
8
9
private void Serialize()
{
    using (FileStream fs = new FileStream("d:/tree.ini", FileMode.OpenOrCreate, FileAccess.Write))
    {
        BinaryFormatter bf = new BinaryFormatter();
        bf.Serialize(fs, treeView1.Nodes.Cast<TreeNode>().ToList());
        fs.Close();
    }
}
десериализация:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void Load()
{
    if (File.Exists("d:/tree.ini"))
    {
        using (FileStream fs = new FileStream("d:/tree.ini", FileMode.OpenOrCreate, FileAccess.Read))
        {
            BinaryFormatter bf = new BinaryFormatter();
            treeView1.Nodes.Clear();
            object obj = bf.Deserialize(fs);
            TreeNode[] nodeList = (obj as IEnumerable<TreeNode>).ToArray();
            treeView1.Nodes.AddRange(nodeList);
            fs.Close();
        }
    }
}
1
132 / 82 / 29
Регистрация: 01.10.2014
Сообщений: 263
30.06.2016, 09:45
Как скрыть узел в тривью? Не нашёл где это свойство
Такого свойства действительно нет. Выход - не добавлять в дерево либо удалять.
0
27 / 27 / 9
Регистрация: 21.04.2015
Сообщений: 704
30.06.2016, 09:48  [ТС]
Тогда к чему свойство IsVisible?
0
132 / 82 / 29
Регистрация: 01.10.2014
Сообщений: 263
30.06.2016, 14:25
определить виден ли нод, например он может быть скрыт или частично скрыт за границами видимости самого Treeview или свёрнут.
1
27 / 27 / 9
Регистрация: 21.04.2015
Сообщений: 704
01.07.2016, 00:23  [ТС]
Ещё такой вопрос. Можно ли применять один форматтер для поочерёдной сериализации нескольких обхектов, у меня имеется дерево тривью и лист, содержащий мой класс данных. Сопоставление пути поиска к конечному узлу и набора данных, привязанных к нему я сделал так, не знаю на сколько это хорошо, напрягает необходимость поиска данных, привязанных к узлу при загрузке.

C#
1
2
3
4
Cards = new List<Card>();
I = Cards.Count - 1;
Cards[I].N = TN.Nodes[i].Handle;
...
0
27 / 27 / 9
Регистрация: 21.04.2015
Сообщений: 704
02.07.2016, 18:58  [ТС]
И ещё вопрос.

Как организовать каскадное удаление связанных данных? Для начала мне нужно собрать список хендлов всех конечных узлов, которые нужно удалить. Затем найти и удалить связанные данные, а затем уже удалять результаты поиска и узел дерева.

Добавлено через 5 часов 59 минут
Как с помощью сериализации сохранить и загрузить несколько объектов в/из файл(а)? Кроме тривью у меня ещё лист надо сохранить/загрузить.
0
27 / 27 / 9
Регистрация: 21.04.2015
Сообщений: 704
04.07.2016, 09:12  [ТС]
Может кто-нить помочь? Как добавить в список все конечные узлы в выбранном ноде? Так вот добавляются только узлы следующего уровня вложения

C#
1
2
3
4
TreeNode TN = new TreeNode();
TN = treeView1.SelectedNode;
List<TreeNode> Del = new List<TreeNode>();
Del.AddRange(TN.Nodes.Cast<TreeNode>().ToArray());
Добавлено через 5 часов 6 минут
Удаление сделал так вот, здесь только основной смысл со сбором удаляемых узлов
C#
1
2
3
4
5
6
7
while (TN.Nodes.Count != 0) TN = TN.Nodes[0];
if (TN.Tag == null) { TN.Remove(); continue; }
TN = TN.Parent; Val = TN.GetNodeCount(false);
for (j = 0; j < Val; j++)
    if (TN.Nodes[0].Tag != null && TN.Nodes[0].GetNodeCount(false) == 0) { 
        Del.Insert(Del.Count, TN.Nodes[0]); TN.Nodes[0].Remove();
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.07.2016, 09:12
Помогаю со студенческими работами здесь

Как сохранить структуру дерева?
Здравствуйте, такой вопрос: у меня есть дерево (TreeView) я в него посредством drag&amp;drop ввожу элементы(nodes), то есть получается...

Программа через структуру typedef struct
Люди помогите если несложно с программой, задание таково: 1.С клавиатуры вводятся пункты структуры - Студент: Матрикул - номер...

Как сохранить структуру бинарного дерева в файл и ее же загрузить в программу
Подскажите пожалуйста, как сохранить и загрузить структуру бинарного дерева в отдельный файл? Допустим, в программе я создал бинарное...

Как открыть struct в struct
Здравствуйте, есть код, мне нужно узнать как можно открыть struct в struct, к примеру чтобы заполнить public string Osnv_Glagol; ...

Как организовать перемещение по узлам структуры
Добрый день, друзья! Создана структура: Sub rGCrt() Range(&quot;A3:A11&quot;).Rows.Group Range(&quot;A13:A21&quot;).Rows.Group ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru