Diskuze: c# treeview prohledani adresářů

C# .NET .NET (C# a Visual Basic) c# treeview prohledani adresářů American English version English version

Avatar
niderle.l
Člen
Avatar
niderle.l:

Ahoj, byl by někdo ochoten mi poradit? Mám aplikaci, která prochází počítač a hlavní složky jsou viděny ve stromě. Tu část mám v pohodě udělanou, ale při uzavření aplikace si chci zapamatovat danou cestu, která byla naposledy načtena. S tím taky nemám problém, ale problém mám s tím, že při opětovném spuštění a následném načtení infromace co bylo naposledy otevřeno nevím, jak zařídit, aby v Treeview mi tu cesturozbalil. Samotná data ze složky jsem schopen načíst, ale není to pěkné, abych načetl dané data a přitom to neodpovídalo tomu, co je rozbalené, nebo v mém případě tomu, že nemám nic rozbaleno.

Předem moc děkuji za pomoc

 
Odpovědět 13. ledna 10:14
Avatar
cmuch
Člen
Avatar
Odpovídá na niderle.l
cmuch:

Ahoj,
já to mám dělané takto v VB.NET, kde si složku také načítam odjinud.

' nacteni frm
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 ' when our component is loaded, we initialize the TreeView by adding the root node
        Dim mRootNode As New TreeNode
        mRootNode.Text = CestaDefault
        mRootNode.Tag = CestaDefault
        mRootNode.Name = CestaDefault.ToLower
        mRootNode.Nodes.Add("*DUMMY*")
        TreeView1.Nodes.Add(mRootNode)

        'Zobrazeni rootu
        'look for a node with a text property value of 'Node3'
        TreeView1.SelectedNode = GetNode(CestaDefault, TreeView1.Nodes)

        'ensure the focus set on the node
        TreeView1.Select()

        'zobrazeni vybrane slozky (musí být dvakrat pro prvotni inicializaci)
        ZobrazeniVybraneSlozky(CestaDefault)
        ZobrazeniVybraneSlozky(CestaDefault)
End Sub
' Zobrazeni vybrane slozky
    Private Sub ZobrazeniVybraneSlozky(Slozka As String)
        'look for a node with a text property value of 'Node3'
        TreeView1.SelectedNode = GetNode(Slozka, TreeView1.Nodes)

        'ensure the focus set on the node
        TreeView1.Select()

        refreshView(Me.TreeView1.SelectedNode) ' aktualizace slozky

    End Sub

    ' funkce pro zjisteni vybrane slozky v treeview
    Private Function GetNode(ByVal text As String, ByVal parentCollection As TreeNodeCollection) As TreeNode

        Dim ret As TreeNode
        Dim child As TreeNode

        For Each child In parentCollection 'step through the parentcollection
            If child.Text = text Then
                ret = child
            ElseIf child.GetNodeCount(False) > 0 Then ' if there is child items then call this function recursively
                ret = GetNode(text, child.Nodes)
            End If

            If Not ret Is Nothing Then Exit For 'if something was found, exit out of the for loop

        Next

        Return ret

    End Function

Je to výběr jen první složky, nějakou delší cestu jsem nezkoušel rozbalovat.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 18. ledna 6:15
Avatar
niderle.l
Člen
Avatar
niderle.l:

Děkuji

 
Nahoru Odpovědět 18. ledna 8:53
Avatar
Standa Hlodavec:

Tohle by mohlo pomoct. Je to sice anglicky, ale v c# a ta struktura procházení adresářů je tam jasná:

http://c-treeview.com/…d-Nodes.html

 
Nahoru Odpovědět 9. května 11:38
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.