Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Проблема с TreeView Добавлено: 29.12.06 20:35  

Автор вопроса:  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


А как сделать, чтобы дочерние узлы были только в один "ряд". Т.е.:еть верхний узел, к нему можно добавить дочерние. А как добиться, чтобы к этим дочерним нельза было добалвять еще дочерние. Т.е, чтобы иерархия была двухуровневой. Заранее благодарен

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Maxxx



Вопросов: 7
Ответов: 23
 Web-сайт: polithelp.sibmediagroup.ru
 Профиль | | #1
Добавлено: 29.12.06 21:09
Блин. Зря людей побеспокоил ;-) Уже сам догадался:

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
[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 прямо в самом контроле. Т.е., выделил элемент, щелкнул по нему два раза - и редактируй себе.

Ответить

Номер ответа: 2
Автор ответа:
 Maxxx



Вопросов: 7
Ответов: 23
 Web-сайт: polithelp.sibmediagroup.ru
 Профиль | | #2
Добавлено: 29.12.06 21:37
Нашел я свойство LabelEdit - поставил на True. Только непонятнО, что надо сделать, чтобы все-таки переименовать элемент. Пару раз удалось - потыкал левой-правой клавишей по элементу, вроде поменялось значение. Но разве это дело! Вопрос: какую комбинацию клавишь надо применить, чтобы изменить элемент.

Ответить

Номер ответа: 3
Автор ответа:
 Maxxx



Вопросов: 7
Ответов: 23
 Web-сайт: polithelp.sibmediagroup.ru
 Профиль | | #3
Добавлено: 29.12.06 22:01
Блин. Умению наверное: догадался-таки как менять элементы:

 Private Sub TreeView1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.Click
        'Изменяем выделенный элемент правой кнопкой мыши
        TreeView1.SelectedNode.BeginEdit()
    End Sub

Ответить

Номер ответа: 4
Автор ответа:
 Maxxx



Вопросов: 7
Ответов: 23
 Web-сайт: polithelp.sibmediagroup.ru
 Профиль | | #4
Добавлено: 29.12.06 22:19
Все-таки нашлась проблема! Вот накрапал код:

    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 - у дочерних. Заранее благодарен.

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 30.12.06 00:50
Конструктор Node перегружен, и при добавлении ноды ты можешь явно указать (через индексы) какая картинка в каком состоянии будет у ноды..

Ответить

Номер ответа: 6
Автор ответа:
 Maxxx



Вопросов: 7
Ответов: 23
 Web-сайт: polithelp.sibmediagroup.ru
 Профиль | | #6
Добавлено: 30.12.06 14:46
Хмм.. Не пойму я. Т.е. при довалении новой ветки я могу добавиь картинку? А можно, если не сложно, в коде это выразить.

Ответить

Номер ответа: 7
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #7 Добавлено: 31.12.06 01:13
А можно, если не сложно, в коде это выразить?

лихко.. :-)
Вариант 1-й
   ' Создаем ноду
   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)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам