Ієрархічне дерево (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);
}
}