powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / ПОИСК В ДЕРЕВЕ
4 сообщений из 4, страница 1 из 1
ПОИСК В ДЕРЕВЕ
    #35728574
RAISA25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не находится требуемый узел,подскажите в чем проблема?Данные берутся из XML файла
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml;
namespace TreeViev
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public void ReadXml(XmlReader xr, TreeNodeCollection nodes)
{
int lastDepth =  0 ;
TreeNode node = null;
while (xr.Read())
{
if (xr.NodeType != XmlNodeType.Element)
continue;
if (lastDepth < xr.Depth)
{
nodes = node.Nodes;
}
else if (lastDepth > xr.Depth)
{
int depth = xr.Depth -  1 ;
do
{
node = node.Parent;
nodes = node.Nodes;
lastDepth--;
}
while (lastDepth != depth);
}
node = new TreeNode();
node.Text = xr.LocalName;
nodes.Add(node);
node.ExpandAll();
lastDepth = xr.Depth;
}
}
// Поиск подузла в узле по названию.
private TreeNode FindNode(TreeNode treenode, string name)
{
// Ищем в узлах первого уровня.
foreach (TreeNode tn in treenode.Nodes)
{
// Если нашли,
if (tn.Text == name)
{
// то возвращаем.
return tn;
}
}
// Ищем в подузлах.
TreeNode node;
foreach (TreeNode tn in treenode.Nodes)
{
// Делаем поиск в узлах.
node = FindNode(tn, name);
// Если нашли,
if (node != null)
{
// то возвращаем.
return node;
}
}
// Ничего не нашли.
return null;
}

private void button1_Click(object sender, EventArgs e)
{

XmlTextReader xr = new XmlTextReader("test.xml");
ReadXml(xr, treeView1.Nodes);
}
private void button2_Click(object sender, EventArgs e)
{
// Снимаем выделение с дерева.
treeView1.SelectedNode = null;
// Ищем узел с определенным текстом.

TreeNode node = new TreeNode();
//здесь я задаю слово ля поиска
TreeNode tn = FindNode(node,textBox2.Text);
// Если нашли,
if (tn != null)
{
// то выделяем.
treeView1.SelectedNode = tn;
treeView1.Focus();
}
}
}
}
}
Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
ПОИСК В ДЕРЕВЕ
    #35728597
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто-нить будет в этой каше разбираться, как думаете?
...
Рейтинг: 0 / 0
ПОИСК В ДЕРЕВЕ
    #35728618
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм. Каша такой стала после переноса. До она хоть как-то читалась.

Модератор:
у доброго фея лучше получилось
...
Рейтинг: 0 / 0
ПОИСК В ДЕРЕВЕ
    #35728974
Фотография BION
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичХм. Каша такой стала после переноса. До она хоть как-то читалась.

Добрый фей все исправит :-)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
using System.IO; 
using System.Xml; 
namespace TreeViev 
{ 
    public partial class Form1 : Form 
    { 
        public Form1() 
        { 
            InitializeComponent(); 
        } 

        public void ReadXml(XmlReader xr, TreeNodeCollection nodes) 
        { 
            int lastDepth = 0; 
            TreeNode node = null; 
            while (xr.Read()) 
            { 
                if (xr.NodeType != XmlNodeType.Element) continue; 
                if (lastDepth < xr.Depth) 
                { 
                    nodes = node.Nodes; 
                } 
                else if (lastDepth > xr.Depth) 
                { 
                    int depth = xr.Depth - 1; 
                    do 
                    { 
                        node = node.Parent; 
                        nodes = node.Nodes; 
                        lastDepth--; 
                    } 
                    while (lastDepth != depth); 
                } 
                node = new TreeNode(); 
                node.Text = xr.LocalName; 
                nodes.Add(node); 
                node.ExpandAll(); 
                lastDepth = xr.Depth; 
            } 
        } 

        // Поиск подузла в узле по названию. 
        private TreeNode FindNode(TreeNode treenode, string name) 
        { 
            // Ищем в узлах первого уровня. 
            foreach (TreeNode tn in treenode.Nodes) 
            { 
                // Если нашли, 
                if (tn.Text == name) 
                { 
                    // то возвращаем. 
                    return tn; 
                } 
            } 
            // Ищем в подузлах. 
            TreeNode node; 
            foreach (TreeNode tn in treenode.Nodes) 
            { 
                // Делаем поиск в узлах. 
                node = FindNode(tn, name); 
                // Если нашли, 
                if (node != null) 
                { 
                    // то возвращаем. return node; 
                } 
            } 
            // Ничего не нашли. 
            return null; 
        } 
        
        private void button1_Click(object sender, EventArgs e) 
        { 
            XmlTextReader xr = new XmlTextReader("test.xml"); 
            ReadXml(xr, treeView1.Nodes); 
        } 
        
        private void button2_Click(object sender, EventArgs e) 
        { 
            // Снимаем выделение с дерева. 
            treeView1.SelectedNode = null; 
            // Ищем узел с определенным текстом. 
            TreeNode node = new TreeNode(); 
            //здесь я задаю слово ля поиска 
            TreeNode tn = FindNode(node,textBox2.Text); // Если нашли, 
            if (tn != null) 
            { 
                // то выделяем. 
                treeView1.SelectedNode = tn; treeView1.Focus(); 
            } 
        } 
    } 
} 
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / ПОИСК В ДЕРЕВЕ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]