treeview-listview

Status
Niet open voor verdere reacties.

bonnowagt

Gebruiker
Lid geworden
7 dec 2006
Berichten
445
Hallo,

Ik heb het onstaande programmaatje met de volgende code:
Code:
Imports System.Diagnostics
Imports System.Windows.Forms
Imports System.IO

Public Class Explorer1

    Private Sub Explorer1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        LoadTree()
        SetView(View.Details)
    End Sub

    Private Sub LoadTree()
        ' Harde schijven worden ingeladen       
        Dim getInfo As System.IO.DriveInfo()
        getInfo = System.IO.DriveInfo.GetDrives
        Dim newNode As TreeNode
        For Each info As System.IO.DriveInfo In getInfo
            If info.IsReady Then
                newNode = New TreeNode(info.Name & info.VolumeLabel)
            Else
                newNode = New TreeNode(info.Name)
            End If
            newNode.ImageIndex = 0
            Dim di As DirectoryInfo = New DirectoryInfo(info.Name)
            newNode.Tag = di
            TreeView.Nodes.Add(newNode)
            nodetree(newNode)        
        Next
    End Sub
    Public Function nodetree(ByVal sender As TreeNode)
        Try
            Dim longpath As String = Nothing
            If TypeOf sender.Tag Is DirectoryInfo Then
                Dim Sinfo As DirectoryInfo = sender.Tag
                longpath = Sinfo.FullName
             Else
                Dim Finfo As FileInfo = sender.Tag
                longpath = Finfo.DirectoryName
               End If
            Dim dirs() As String = Nothing
            Dim dirname As String = Nothing
            dirs = Directory.GetDirectories(longpath, "*.*", SearchOption.TopDirectoryOnly)
            For Each d As String In dirs
                Dim di As New DirectoryInfo(d)
                dirname = di.Name
                Dim newnode As New TreeNode(dirname)
                newnode.Tag = di
                sender.Nodes.Add(newnode)
            Next
        Catch
        End Try
        Return Nothing
    End Function
    Private Sub TreeView1_BeforeExpand(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewCancelEventArgs) Handles TreeView.BeforeExpand
        Try
            Dim Nnodes As TreeNodeCollection = e.Node.Nodes
            For Each N As TreeNode In Nnodes
                If TypeOf N.Tag Is DirectoryInfo Then
                    If N.Nodes.Count = 0 Then
                        nodetree(N)
                   End If
                End If
            Next
        Catch ex As Exception
        End Try
    End Sub
    Private Sub ToggleFoldersVisible()    
    Private Sub FoldersToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        ToggleFoldersVisible()
    End Sub
   Private Sub FoldersToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        ToggleFoldersVisible()
    End Sub
    Private Sub SetView(ByVal View As System.Windows.Forms.View)
             Dim MenuItemToCheck As ToolStripMenuItem = Nothing
        Select Case View
            Case View.Details
                MenuItemToCheck = DetailsToolStripMenuItem1
            Case View.LargeIcon
                MenuItemToCheck = GrootToolStripMenuItem
            Case View.List
                MenuItemToCheck = LijstToolStripMenuItem
            Case View.SmallIcon
                MenuItemToCheck = KleinToolStripMenuItem
            Case View.Tile
                MenuItemToCheck = TegelsToolStripMenuItem
        End Select
              For Each MenuItem As ToolStripMenuItem In LijstToolStripMenuItem.DropDownItems
            If MenuItem Is MenuItemToCheck Then
                MenuItem.Checked = True
            Else
                MenuItem.Checked = False
            End If
        Next
          ListView.View = View
    End Sub
   Private Sub TreeView_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView.AfterSelect
   node of the treeview
        ListView.Items.Clear()
        Dim dirs() As String = Nothing
        Dim dirname As String = Nothing
        Dim dinfo As DirectoryInfo
        dinfo = e.Node.Tag
        dirs = Directory.GetDirectories(dinfo.FullName, "*.*", SearchOption.TopDirectoryOnly)
        For Each d As String In dirs
            Dim di As New DirectoryInfo(d)
                     Dim temp As ListViewItem = ListView.Items.Add(di.Name)
            temp.ImageIndex = 0
        Next
        Dim files() As String = Directory.GetFiles(dinfo.FullName, "*.*", SearchOption.TopDirectoryOnly)
        For Each f As String In files
            Dim fi As New FileInfo(f)
            Dim temp As ListViewItem = ListView.Items.Add(fi.Name)
            temp.ImageIndex = 1
        Next
    End Sub

    Private Sub LijstToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LijstToolStripMenuItem.Click
        SetView(View.List)
    End Sub
    Private Sub DetailsToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DetailsToolStripMenuItem1.Click
        SetView(View.Details)
    End Sub
    Private Sub GrootToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GrootToolStripMenuItem.Click
        SetView(View.LargeIcon)
    End Sub
    Private Sub KleinToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KleinToolStripMenuItem.Click
        SetView(View.SmallIcon)
    End Sub
    Private Sub TegelsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TegelsToolStripMenuItem.Click
        SetView(View.Tile)
    End Sub

    Private Sub OpenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewToolStripMenuItem.Click
     
      
        Process.Start(System.IO.Path.GetFullPath(ListView.SelectedItems.Item(0).Text))
  

 End Sub

    Private Sub ListView_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView.SelectedIndexChanged
        MsgBox(ListView.SelectedItems.Item(0).Text)
    End Sub
End Class


Mijn vraag gaat over de volgende regel:
Vanuit de listview wil ik door het openen van dit bestand het bestandje uitvoeren. Ik de listview staat bijv: Hussel.exe
Dit probeer ik op te starten door deze code":

Process.Start(System.IO.Path.GetFullPath(ListView.SelectedItems.Item(0).Text

Nu komt het probleem dat alle programma'sdezelfde path ineens krijgen als ik dit met Getfullpath doe. Namelijk het fullpath is automatisch in de listview de currentpath.

Hoe los ik dit op
 
Wat staat er dan in je ListView?
 
In de Tree staan de mappen Uiteindelijk in de listview komen de bestanden
 
Dus de map staat in de TreeView geselecteerd?

Dan kun je toch:

Code:
Process.Start(Geselecteerde item in Treeview + Geselecteerde item in ListView)

doen?
 
Hallo,

Ja had het uitgevonden net voor je schreef:
Process.Start(Label20.Text + "\" + ListView.SelectedItems.Item(0).Text)

Dit werkt prima en heb geprobeerd om een dezelfde wijze met dubbelklikken mappen uit te pakken in listview alleen dit wil niet lukken. Krijg niet het juiste Pad.

Maar in ieder geval heel erg bedankt.
 
Als je met dubbelklikken mappen uit wil pakken, moet je iets in het DoubleClickEvent gaan zetten.

Zoiets:

[CPP] Private Sub ListView1_DoubleClick() Handles ListView1.DoubleClick
If IO.Directory.Exists(ListView1.SelectedItems(0).Text) Then
Dim dir As String = ListView1.SelectedItems(0).Text
ListView1.Items.Clear()
For Each item In IO.Directory.GetDirectories(dir)
ListView1.Items.Add(item)
Next
For Each item In IO.Directory.GetFiles(dir)
ListView1.Items.Add(item)
Next
End If
End Sub[/CPP]
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan