Ієрархічне дерево (TreeView)

Додати

tr1.Items.Add("Помідор");

tr1.Items.Add(new TreeViewItem() { Header = "Помідор" });

Показати

tr1.Items.GetItemAt(0).ToString();    // увесь об'єкт

Кількість 

tr1.Items.Count;

Видалити

tr1.Items.RemoveAt(0);

tr1.Items.Remove(tr1.SelectedItem);

Додати піделемент

//1

ItemCollection items = tr1.Items;

TreeViewItem newChild = new TreeViewItem();

newChild.Header = "Батько";

TreeViewItem newChild2 = new TreeViewItem();

newChild2.Header = "Син";

newChild.Items.Add(newChild2);

tr1.Items.Add(newChild);

//2

ItemCollection items = treeView1.Items;           

for (int i =1; i<=10 ; i++)

{

     TreeViewItem newChild = new TreeViewItem();

     newChild.Header = String.Format("Item {0}", i++);

     for (int x = 1; x <= 5; x++)

     {

          TreeViewItem newChild2 = new TreeViewItem();

          newChild2.Header = String.Format("SubItem {0}", x);

          newChild.Items.Add(newChild2);

     }

     treeView1.Items.Add(newChild);

}

Обраний

tr1.SelectedValue;

treeView1.SelectedItem;              //  != null

TreeViewItem selectedTVI = (TreeViewItem)tr1.SelectedItem;

string res = selectedTVI.Header.ToString();

Обраний і два рази вгору

string obr = "";

TreeViewItem selectedTVI = (TreeViewItem)tr1.SelectedItem;

TreeViewItem selectedTVI2 = (TreeViewItem)selectedTVI.Parent;

TreeViewItem selectedTVI3 = (TreeViewItem)selectedTVI2.Parent;

obr += selectedTVI3.Header.ToString() + 

selectedTVI2.Header.ToString() +

selectedTVI.Header.ToString();

Пошук

tr1.Items.IndexOf("Помідор");     // повертає позицію починаючи з 0 чи -1

Вставити на позицію

tr1.Items.Insert(1, "Морква");     // зразу після першого

Зробити виділеним

tr1.Items.IsSelected = true;

Очистити

tr1.Items.Clear();

Чи елемент розкритий

if (item.IsExpanded == true){}

Пробіжатися по дереву рівень перший

foreach (TreeViewItem item in tr1.Items)

{

       MessageBox.Show(item.Header.ToString());

}

Пробіжатися по дереву рівень другий

foreach (TreeViewItem item in treeView1.Items)

{

     foreach (TreeViewItem child in item.Items)

     {

     }

}

Пробіжатися по всім рівням через StringBuilder

StringBuilder l_builder = new StringBuilder();

foreach (TreeViewItem l_item in MyTreeView.Items)

{

    ProcessNodes(l_item, l_builder, 0);

}

MessageBox.Show(l_builder.ToString());

private void ProcessNodes(TreeViewItem node, StringBuilder builder, int level)

{

   builder.Append(new string('\t', level) + node.Header.ToString() + Environment.NewLine);

   foreach (TreeViewItem l_innerNode in node.Items)

   {

       ProcessNodes(l_innerNode, builder, level + 1);

   }

}