Treview e drive filesystem

lunedì 18 settembre 2006 - 16.23

gandalf_03_75 Profilo | Junior Member

Ciao a tutti sto facendo un'applicazione con visual studio 2005 che dato il disco c mi va a caricare in una treeview tutti i file e le sottocartelle.
Il mio problema e' come faccio a reperire da codice il numero di partizioni presenti per creare i nodi (nel caso di due partizioni C e D)?

Grazie
Per i paurosi il futuro resterà sconosciuto, per i deboli sarà irraggiungibile, per gli incoscienti offrirà nuove opportunità.

sanbiz Profilo | Senior Member

>Ciao a tutti sto facendo un'applicazione con visual studio 2005
>che dato il disco c mi va a caricare in una treeview tutti i
>file e le sottocartelle.
>Il mio problema e' come faccio a reperire da codice il numero
>di partizioni presenti per creare i nodi (nel caso di due partizioni
>C e D)?

Prova semplicemente ad iterare fra i DriverInfo

For Each myInfo As System.IO.DriveInfo In My.Computer.FileSystem.Drives
MsgBox(myInfo.Name)
Next


Se vuoi puoi guardare anche la proprietà DriveType per sapere di cosa si tratta (dunità di rete, cdRom ecc.)

--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

gandalf_03_75 Profilo | Junior Member

grazie innanzitutto per la risposta adesso mi torna i drive e li metto per comodita' in una collection che poi successivamente vado a scorrere per popolare la treeview.
Per far cio' uso il seguente codice ma fa il primo giro e al secondo scoppia.

-------------------------------------------------------------------------------------------------------------
Public Class frmVisDir

Private Sub frmVisDir_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Dim iNodo As New System.Windows.Forms.TreeNode()
Dim iNodo1 As New System.Windows.Forms.TreeNode()
Dim strDrive As New Collection
Dim iDriveCount As Integer

Try

For Each drive As String In System.IO.Directory.GetLogicalDrives
strDrive.Add(drive.ToString)
iDriveCount += 1
Next

For i As Integer = 1 To iDriveCount
iNodo.ImageIndex = 0
iNodo.SelectedImageIndex = 0
iNodo.Text = strDrive.Item(i)
trvDirectory.Nodes.Add(iNodo)
iNodo.Nodes.Add("")
Next

'iNodo.ImageIndex = 0
'iNodo.SelectedImageIndex = 0
'iNodo.Text = "C:"
'trvDirectory.Nodes.Add(iNodo)
'iNodo.Nodes.Add("")
Catch ex As Exception
MsgBox(ex.ToString)
End
End Try

End Sub

-----------------------------------------------------------------------------

errore

---------------------------------------------------------------------------------------------------------------
"System.ArgumentException: Cannot add or insert the item 'C:\' in more than one place. You must first remove it from its current location or clone it.
Parameter name: node
at System.Windows.Forms.TreeNodeCollection.AddInternal(TreeNode node, Int32 delta)
at System.Windows.Forms.TreeNodeCollection.Add(TreeNode node)
at VisDirFile.frmVisDir.frmVisDir_Load(Object sender, EventArgs e) "
---------------------------------------------------------------------------------------------------------------

Grazie
Per i paurosi il futuro resterà sconosciuto, per i deboli sarà irraggiungibile, per gli incoscienti offrirà nuove opportunità.

totti240282 Profilo | Guru

Se lo trovo c'era un esempio della microsoft cghe faceva ciò ed era veramente carino.
C'è solo un capitano !!!!!!

gandalf_03_75 Profilo | Junior Member

Ho risolto cosi


-------------------------------------------------------------
For i As Integer = 1 To iDriveCount
Dim iNodo As New System.Windows.Forms.TreeNode()
iNodo.ImageIndex = 0
iNodo.SelectedImageIndex = 0
iNodo.Text = strDrive.Item(i)
trvDirectory.Nodes.Add(iNodo)
iNodo.Nodes.Add("")
iNodo.Clone()
Next
-------------------------------------------------------------

Che ve ne pare??


sanbiz Profilo | Senior Member

Beh, semplicemente perchè dimensioni un oggetto iNode all'inizio della tua routine, e poi continui a lavorare su di esso cercando di aggiungerlo più volte (iNodo.Nodes.Add(""))
All'interno della seconda for dimensiona ogni volta un nodo differente:
iNodo = New System.Windows.Forms.TreeNode

vedrai che funziona.
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5