Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Вопрос по TreeView Добавлено: 27.04.08 23:22  

Автор вопроса:  Greymos
В TreeView есть возможность установить CheckBoxes. Это замечательно, но при его установке это значение получают все узлы дерева. Есть ли возможность устанавливать это свойство для отдельных узлов?

Ответить

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

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



Вопросов: 29
Ответов: 284
 Web-сайт: ммм.сайта.НЕТ
 Профиль | | #1
Добавлено: 28.04.08 14:48
Я не так много общался с этим элементом, но могу сказать что нельзя... зато можно его дописать, но это не ко мне =)

Ответить

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



Вопросов: 1
Ответов: 1
 Профиль | | #2 Добавлено: 30.04.08 10:45
Вообщем придумал как выкрутится в этой ситуации. Нужно воспользоваться коллекцией ImageList. Т.е. подставлять рисунок галочки в нужный момент. Однако при написании этого кода возникли вопросы. Итак
Это в процедуру загрузки формы:
'Строю узлы
        Dim Node1, Node2, Node3 As TreeNode
        Node1 = TreeView1.Nodes.Add("AAA";)
        Node2 = Node1.Nodes.Add("aaa";)
        Node3 = Node2.Nodes.Add("1";)
        Node3 = Node2.Nodes.Add("2";)
        Node3 = Node2.Nodes.Add("3";)
        TreeView1.ExpandAll()

        ' Создаю ImageList для TreeView
        Dim myImageList As New ImageList
        myImageList.Images.Add(Image.FromFile("PLUS.BMP";))

        ' Связываю ImageList с TreeView
        TreeView1.ImageList = myImageList

        ' Ставлю значение картинки по умолчанию
        TreeView1.ImageIndex = 1

Это в процедуру TreeView1_MouseUp:
Dim pnt As System.Drawing.Point
        pnt.X = e.X
        pnt.Y = e.Y
        If e.Button = MouseButtons.Right Then
            TreeView1.SelectedNode = TreeView1.GetNodeAt(e.X, e.Y)
            TreeView1.SelectedNode.ImageIndex = 0
        End If

Теперь собственно вопрос. 'Почему при таком коде рисунок появляется на узле выбранном до этого?

Ответить

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



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #3
Добавлено: 30.04.08 12:24
О_о а зачем так извращаться и получать node по координатам мышки, попробуй событие NodeMouseClick

Ответить

Номер ответа: 4
Автор ответа:
 Сергей



Вопросов: 0
Ответов: 3
 Профиль | | #4 Добавлено: 30.04.08 23:06
О_о а зачем так извращаться и получать node по координатам мышки, попробуй событие NodeMouseClick


Хотелось бы узнать где сие событие найти? ;-))

Ответить

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



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #5
Добавлено: 01.05.08 10:38
ну как где, прям тут) (студия 2005?)

Private Sub TreeView1_NodeMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
  MsgBox(e.Node.Text)
End Sub

Ответить

Номер ответа: 6
Автор ответа:
 Сергей



Вопросов: 0
Ответов: 3
 Профиль | | #6 Добавлено: 01.05.08 12:18
Private Sub TreeView1_NodeMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
  MsgBox(e.Node.Text)
End Sub


А у меня 2003 и такого нет. Что делать?

Ответить

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



Вопросов: 29
Ответов: 284
 Web-сайт: ммм.сайта.НЕТ
 Профиль | | #7
Добавлено: 01.05.08 18:59
что делать... что делать... качать условно-бесплатную студию 2008 на 90 дней с майкрософтовского сайта!

Ответить

Номер ответа: 8
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #8
Добавлено: 01.05.08 19:20
Ну хорошо, тогда поступим так

Dim pnt As System.Drawing.Point
        pnt.X = e.X
        pnt.Y = e.Y
        If e.Button = MouseButtons.Right Then
            TreeView1.SelectedNode = TreeView1.GetNodeAt(e.X, e.Y)
            TreeView1.SelectedNode.ImageIndex = 0
        End If


зачем ты здесь присваиваешь
TreeView1.SelectedNode = TreeView1.GetNodeAt(e.X, e.Y)
ведь при клике мышкой в дереве узел и так САМ ВЫДЕЛЯЕТСЯ
в событии TreeView1_MouseUp достаточно 1 строчки:
If e.Button = MouseButtons.Right Then TreeView1.SelectedNode.ImageIndex = 0

Ответить

Номер ответа: 9
Автор ответа:
 Сергей



Вопросов: 0
Ответов: 3
 Профиль | | #9 Добавлено: 01.05.08 22:41
зачем ты здесь присваиваешь
TreeView1.SelectedNode = TreeView1.GetNodeAt(e.X, e.Y)
ведь при клике мышкой в дереве узел и так САМ ВЫДЕЛЯЕТСЯ

Пытаюсь выделить узел не выделяя его явно (сори за каламбур) Дело в том, что элемент управления TreeView самостоятельно подставляет рисунки из коллекции под различные действия пользователя. Т.к. рисунок должен ставится только в дочернии узлы то соответственно и пытаюсь избежать автоподстановки таким вот примитивным способом. Кстати настройки элемента типа
TreeView1.SelectedImageIndex = 1
ни к чему не приводят и даже мешают

Ответить

Страница: 1 |

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



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