Автор вопроса: Maxxx | Web-сайт:polithelp.sibmediagroup.ru
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TreeView1.Nodes.Add(TextBox1.Text) 'Добавляем элемент верхнего уровня
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim SelNode As TreeNode
'Присваиваем переменной выбранный узел.
SelNode = TreeView1.SelectedNode
If SelNode Is Nothing Then
MessageBox.Show("Ничего не выделено")
Else
'Добавляем подузел.
SelNode.Nodes.Add(TextBox2.Text)
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'Объявление переменной для узла TreeView.
Dim SelNode As TreeNode
'Присваиваем переменной выбранный узел.
SelNode = TreeView1.SelectedNode
'Проверка, выделен ли какой-нибудь узел.
If SelNode Is Nothing Then
MessageBox.Show("Ничего не выделено")
Else
'Удаляем подузел (со всеми его подузлами).
SelNode.Remove()
End If
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'Удаление всех узлов.
TreeView1.Nodes.Clear()
End Sub
End Class
А как сделать, чтобы дочерние узлы были только в один "ряд". Т.е.:еть верхний узел, к нему можно добавить дочерние. А как добиться, чтобы к этим дочерним нельза было добалвять еще дочерние. Т.е, чтобы иерархия была двухуровневой. Заранее благодарен
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TreeView1.Nodes.Add(TextBox1.Text) 'Добавляем элемент верхнего уровня
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim SelNode As TreeNode
'Присваиваем переменной выбранный узел.
SelNode = TreeView1.SelectedNode
'Проверка: если узел выбран, то добаляем
If SelNode Is Nothing Then
MessageBox.Show("Ничего не выделено"
Else
[B]
'Добавляем подузел. Проверка: выделен ли корневой узел
If TreeView1.SelectedNode.Level = 0 Then SelNode.Nodes.Add(TextBox2.Text)[/B]
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'Объявление переменной для узла TreeView.
Dim SelNode As TreeNode
'Присваиваем переменной выбранный узел.
SelNode = TreeView1.SelectedNode
'Проверка, выделен ли какой-нибудь узел.
If SelNode Is Nothing Then
MessageBox.Show("Ничего не выделено"
Else
'Удаляем подузел (со всеми его подузлами).
SelNode.Remove()
End If
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'Удаление всех узлов.
TreeView1.Nodes.Clear()
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
' TextBox1.Text = TreeView1.SelectedNode.Level
End Sub
End Class
Все-таки догадался, что за это отвечает TreeView1.SelectedNode.Level
Хотя, еще один вопрос возник: можно ли изменять имена элементов TreeView прямо в самом контроле. Т.е., выделил элемент, щелкнул по нему два раза - и редактируй себе.
Нашел я свойство LabelEdit - поставил на True. Только непонятнО, что надо сделать, чтобы все-таки переименовать элемент. Пару раз удалось - потыкал левой-правой клавишей по элементу, вроде поменялось значение. Но разве это дело! Вопрос: какую комбинацию клавишь надо применить, чтобы изменить элемент.
Блин. Умению наверное: догадался-таки как менять элементы:
Private Sub TreeView1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.Click
'Изменяем выделенный элемент правой кнопкой мыши
TreeView1.SelectedNode.BeginEdit()
End Sub
Dim img_tree As ImageList
img_tree = New ImageList
img_tree.Images.Add(Image.FromFile("C:\Documents and Settings\Rechkov\Рабочий стол\001.bmp")
img_tree.Images.Add(Image.FromFile("C:\Documents and Settings\Rechkov\Рабочий стол\002.bmp")
img_tree.Images.Add(Image.FromFile("C:\Documents and Settings\Rechkov\Рабочий стол\003.bmp")
TreeView1.ImageList = img_tree
TreeView1.SelectedImageIndex = 2
В общем, все понятно. Я научился добавлять картинки ко всем элементам и менять картинку у выделенного. А как сделать так, чтобы были разные картинки у корневых узлов, и разные - у дочерних. В общем, чтобы, например, 001.bmp выводился у корневых, а 002.bmp - у дочерних. Заранее благодарен.
' Создаем ноду
Dim rootNode As New TreeNode("CustomerList"
rootNode.ImageIndex = 0
rootNode.SelectedImageIndex = 1
' Добавляем ноду
myTreeView.Nodes.Add(rootNode)
Вариант 2-й
Dim rootNode As New TreeNode("CustomerList", 0, 1)
myTreeView.Nodes.Add(rootNode)
В обоих случаях 0 и 1 это индексы картинок в твоем ImageList
Главное, что ты должен понять так это то, что у каждой ноды есть коллекция потомков.. Nodes. То есть эта коллекция будет на 1 уровень ниже.. В коде это можно выразить примерно так
'// Создаем родителя
Dim rootNode As New TreeNode("Root Node", 0, 1)
'// Создаем потомка
Dim childNode As New TreeNode("Child Node", 1, 0)
'// Добавляем потомка к родителю
rootNode.Nodes.Add(childNode)
'// И все это семейство запихиваем в контрол
TreeView1.Nodes.Add(rootNode)