Страница: 1 |
Страница: 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:
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-сайт:
Профиль | | #3
Добавлено: 30.04.08 12:24
а зачем так извращаться и получать node по координатам мышки, попробуй событие NodeMouseClick
Номер ответа: 4
Автор ответа:
Сергей
Вопросов: 0
Ответов: 3
Профиль | | #4
Добавлено: 30.04.08 23:06
Хотелось бы узнать где сие событие найти? )
Номер ответа: 5
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #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
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-сайт:
Профиль | | #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 самостоятельно подставляет рисунки из коллекции под различные действия пользователя. Т.к. рисунок должен ставится только в дочернии узлы то соответственно и пытаюсь избежать автоподстановки таким вот примитивным способом. Кстати настройки элемента типа