ajitha.pusapati Ответов: 2

Корневой узел Treeview будет последним перед путем дочернего узла


D1 1___ _ D4
1 1___ _ _ D5
1 1 1___ _ _ D7
1 1 1___ _ _ D8
1 1
1 1___ _ _ D6
1 1 1___ _ _ D9
1 1
1 1___ _ _ D7
1
D2
1___ _ D12
1 1___ _ _ D10
1 1___ _ _ D11
1
1____ _ D15
1 1__ _ _ D16
1 1____диода d17
D3
1____ _ D12
1____ _ D13


Хай всем..
это сейчас на примере дерева я хочу, чтобы путь
то есть out put shoud должен быть таким...

D1//D4//D5//D6//D7
D1//D4//D6//D9
D1//D4//D7
D2//D12//D10/D11
Д2//Д15//Д16//Диода D17
D3//D12//D13
Это требуется вне пут...

кто-нибудь может пожалуйста помочь мне....

MarqW

Ваш вывод сбивает меня с толку - D1//D4//D5//D6//D7, D7 не является дочерним элементом D6.

ajitha.pusapati

до Д6 у меня на пути. но мое требование состоит в том, что у D5 есть дети D6 и D7, а у D6 и D7 есть дети.
вот почему...

Sandeep Mewara

Какие усилия вы приложили?

ajitha.pusapati

в c#.net формы windows

[no name]

не могли бы вы быть более конкретными и для этого, для какого кода Вы написали так и какую ошибку он показывает?

ajitha.pusapati

частный недействительными методе button2_click(объект отправителя, EventArgs в электронной)
{

FinalTVStrings коллекции = новый ArrayList();

Узлы TreeNodeCollection = tvAllData.Узлы;
for (int i = 0; i <= узлы.Граф-1;i++)
{

// Выберите корневой узел
TreeNodeCollection Cnodes = tvAllData.Узлы[i].Узлы;
если (Cnodes.Count > 0)
{
//tvAllData.SelectedNode = Cnodes[0];
для (int j = 0; j <= Cnodes.Количество - 1; j++)
{
TreeNodeCollection SCnodes = tvAllData.Узлы[i].Узлы[j].Узлы;
if (SCnodes.Count > 0)
{
for (int SC = 0; SC <= SCnodes.Count - 1; SC++)
{
TreeNodeCollection Sensornodes = tvAllData.Узлы[i].Узлы[j].Узлы[SC].узлы;
если (Sensornodes.Count > 0)
{
для (int Sen = 0; Sen <= Sensornodes.Count - 1; Sen++)
{

тваллдата.SelectedNode = Sensornodes[Sen];
//MessageBox.Шоу(tvAllData.Выбранный узел.Полный Путь, "Финал");
Ящик для сообщений.Show(Sensornodes[Sen].Text, "Датчики");
finalTVStrings.Добавить(tvAllData.Выбранный узел.Полный путь);

}
}
еще
{
тваллдата.SelectedNode = SCnodes[SC];
// MessageBox.Шоу(tvAllData.Выбранный узел.Полный путь);
Ящик для сообщений.Show(SCnodes[SC].Text, "SubChild");
finalTVStrings.Добавить(tvAllData.Выбранный узел.Полный путь);
}
}
}
еще
{
тваллдата.SelectedNode = Cnodes[j];
// MessageBox.Шоу(tvAllData.Выбранный узел.Полный путь);
Ящик для сообщений.Show(Cnodes[j].Text, "SChild");
finalTVStrings.Добавить(tvAllData.Выбранный узел.Полный путь);
}
}
}
еще
{
тваллдата.SelectedNode = узлы[i];
//MessageBox.Шоу(tvAllData.Выбранный узел.Полный путь);
Ящик для сообщений.Show(Cnodes[i].Text, "ребенок");
finalTVStrings.Добавить(tvAllData.Выбранный узел.Полный путь);
}


}

}

ajitha.pusapati

это мой код вот это выходное слово
D1//D4//D5//D6
D1//D4//D5//D7
но мое требование-D1//D4//D5//D6//D7

Fredrik Bornander

Я дал ответ, не могли бы вы дать мне знать, если это то, что вы искали?

ajitha.pusapati

спасибо за ваш повтор. я получил путь до последнего дочернего узла. на это ставить не текущую.
мой желаемый выход-D1//D4//D5//D6//D7
У D5 есть два ребенка.

2 Ответов

Рейтинг:
1

Member 13934840

Для того чтобы получить "D1//D4//D5//D6//D7"
Пользователь этот код : [имя TreeView].PathSeparator = "//"
вот и все".


Dave Kreskowiak

Вы опоздали всего на семь лет, и ваш ответ не решает проблему.

Рейтинг:
0

Fredrik Bornander

Я предполагаю, что вы говорите о WinForms TreeView?
В таком случае попробуйте что-нибудь вроде этого;


private string GetPath(TreeNode node)
{
    string path = "";
    for (TreeNode iterator = node; iterator != null; iterator = iterator.Parent)
    {
        path = String.Format("{0}//{1}", iterator.Name, path);
    }
    return path;
}
private void FindPaths(TreeNodeCollection nodes, 
                       IDictionary<TreeNode, string> paths)
{
    foreach (TreeNode node in nodes)
    {
        if (node.Nodes.Count == 0)
            paths[node] = GetPath(node);
        else
            FindPaths(node.Nodes, paths);
    }
}
private void some_click_event(object sender, TreeViewEventArgs e)
{
    IDictionary<TreeNode, string> paths = new Dictionary<TreeNode, string>();
    FindPaths(treeView.Nodes, paths);
}


То paths словарь будет содержать все пути с их конечным узлом в качестве ключа.

Надеюсь, это поможет,
Фредрик