Visual Basic.NET 7.x (2002/03)Visual Basic 9 (2008)Visual Basic 8 (2005)Visual Basic 6Visual Studio 2005设计 / 图形Windows XP.NET 2.0XML中级开发Visual StudioWindows.NETVisual Basic
为每个 TreeNode 使用多个图像






3.65/5 (16投票s)
为每个 TreeNode 使用多个图像
引言
一般来说,我们只能为每个 TreeNode
使用一张图片。但有时我们需要多张图片,比如两张、三张或更多。我们可能还希望在点击不同图片时执行不同的操作。通过一些技巧,我们的单张图片可以像多张图片一样工作,就像我在本文的示例中所做的那样。你只需要使用任何图像编辑软件(例如 Photoshop)合并这些图片。这可以通过在 .NET 中使用 ImageList
来完成,将其分配给 TreeView
。
Using the Code
识别并对这些图片执行操作就像添加图片一样简单。只需使用 TreeView
的 NodeMouseClick
事件,如下所示…
Private Sub trvMain_NodeMouseClick(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) _
Handles trvMain.NodeMouseClick
Dim x = e.Node.Bounds.X
Dim y = e.Node.Bounds.Y
Dim h = e.Node.Bounds.Y + e.Node.Bounds.Height
If e.X > x - 18 And e.X < x - 3 Then
If e.Y > y And e.Y < h Then
If e.Node.Nodes.Count = 0 Then
MsgBox(e.Node.Text + " Form")
End If
End If
ElseIf e.X > x - 35 And e.X < x - 18 Then
If e.Y > y And e.Y < h Then
MsgBox(e.Node.Text + " Document")
End If
End If
End Sub
在这个子例程的开始,我们已经识别了当前 TreeNode
的边界。然后我们必须检查鼠标点击的位置,如果鼠标点击在 Document Image 上,那么 IF…Else
语句的 Else
部分将得到 true
,如果鼠标点击在 Form Image 上,那么 IF…Else
语句的 IF
部分将得到 true
。在这两种情况下,我们都可以执行任何操作,而我只是显示一条消息。
接下来的事情是,如果你不想每个 TreeNode
都使用相同的图片,也就是说,你想更改具有子节点的 TreeNode
的图片。在运行时,当页面加载时,通过更改这些节点的 ImageIndex
属性来实现。
'Changing ImageIndex of TreeNodes which has Subtrees
Private Sub Main_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Load
For Each node As TreeNode In trvMain.Nodes
If node.Nodes.Count > 0 Then
node.ImageIndex = 1
node.SelectedImageIndex = 1
checkChild(node)
End If
Next
End Sub
'Recurring subroutine to check whether the child node has subtree.
Private Sub checkChild(ByVal nod As TreeNode)
For Each node As TreeNode In nod.Nodes
If node.Nodes.Count > 0 Then
node.ImageIndex = 1
node.SelectedImageIndex = 1
checkChild(node)
End If
Next
End Sub
关注点
你可以使用任意数量的图片,你唯一需要做的就是使用任何图像编辑软件将它们合并。还要记住,当你在检查鼠标点击位置时,你必须知道确切的图片大小,这样你才能轻松地将其应用于 if...else
条件。
结束语
我希望这篇文章对你有所帮助。欲了解更多信息,你可以查看下载部分提供的演示程序,或者你可以在下面的评论部分留言与我联系。祝你好运!
历史
- 2008年6月14日:初始帖子