Solved

VB.net TreeView image list populating all nodes problem

Posted on 2012-04-01
5
1,771 Views
Last Modified: 2012-04-03
Hi

I am using the following code to populate a TreeView control in VB.net.
The result is shown on the image below.
For some reason, all the nodes are using the second image "TreeView" when
I don't want them to have any image. All I wanted to populate is cube and only
the bottom one. I don't know why it is in the parent as well

    Sub Load_Images()
        Dim myImageList As New ImageList()
        myImageList.Images.Add(My.Resources.cube)
        myImageList.Images.Add(My.Resources.TreeView)
        myImageList.Images.Add(My.Resources.TreeView2)

        ' Assign the ImageList to the TreeView.
        Me.TreeView_From.ImageList = myImageList

        Me.TreeView_From.Nodes(0).Nodes(2).ImageIndex = 0

    End Sub
1
0
Comment
Question by:murbro
  • 2
  • 2
5 Comments
 
LVL 20

Expert Comment

by:BuggyCoder
ID: 37793844
0
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 37795453
What are the image indices of the other nodes? Does it work if you set imageindex on one of the nodes to -1?
0
 

Author Comment

by:murbro
ID: 37800428
Hi CodeCruiser

The image is populated with the following code that you saw in a different question. Perhaps that will shed some light on the indices
  Public Sub Populate_TreeView_From_SQL()

        Dim SQLExpression As String = _
            "SELECT TABLE_NAME, COLUMN_NAME FROM information_schema.columns ORDER BY TABLE_NAME,COLUMN_NAME"

        Dim Rootnode As TreeNode = Nothing
        Dim Mainnode As TreeNode = Nothing
        Dim Childnode As TreeNode = Nothing

        Dim MainName As String = String.Empty

        Dim oConnectionString As String = Me.RichTextBox1.Text
        Dim cn As New SqlConnection(oConnectionString)

        Dim adp As New SqlDataAdapter(SQLExpression, cn)

        Dim ds As New DataSet

        adp.Fill(ds, "SystemData")

        Me.TreeView_From.Nodes.Clear()
     
        Rootnode = Me.TreeView_From.Nodes.Add(key:="Root", text:="database name here", _
                                        imageIndex:=0, selectedImageIndex:=0)



        For Each row As DataRow In ds.Tables("SystemData").Rows

            If MainName <> row(0).ToString Then
                Mainnode = Rootnode.Nodes.Add(key:="Table", text:=row(0).ToString, _
                imageIndex:=1, selectedImageIndex:=1)
                MainName = row(0).ToString
            End If

            Childnode = Mainnode.Nodes.Add(key:="Column", text:=row(1).ToString, _
            imageIndex:=2, selectedImageIndex:=2)

        Next

        Me.TreeView_From.Nodes(0).EnsureVisible()
        Me.TreeView_From.ExpandAll()
        Me.TreeView_From.Scrollable = True

        ds.Dispose()
        ds = Nothing
        adp.Dispose()
        adp = Nothing
        cn.Dispose()
        cn = Nothing

    End Sub
0
 
LVL 83

Accepted Solution

by:
CodeCruiser earned 500 total points
ID: 37802105
Yes you are setting the image indices of all the nodes when creating these.

Change this

            Childnode = Mainnode.Nodes.Add(key:="Column", text:=row(1).ToString, _
            imageIndex:=2, selectedImageIndex:=2)


to

            Childnode = Mainnode.Nodes.Add(row(1).ToString)
0
 

Author Closing Comment

by:murbro
ID: 37803169
thanks
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you're writing a .NET application to connect to an Access .mdb database and use pre-existing queries that require parameters, you've come to the right place! Let's say the pre-existing query(qryCust) in Access takes a Date as a parameter and l…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now