Cours en ligne

Résolu
Signaler
Messages postés
41
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
28 mars 2008
-
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
-
Bonjour,
est ce que qqun saurait ou je peux trouver un cours en ligne sur vb.net dans lequel une partie est consacrée au treeview. J'ai beau chercher je trouve pas.
Merci d'avance

14 réponses

Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
74
ce qui donne :


Imports System.IO
Imports System.Runtime.InteropServices

Public Class Form1
Private Structure SHFILEINFO
Public hIcon As IntPtr ' : icon
Public iIcon As Integer ' : icondex
Public dwAttributes As Integer ' : SFGAO_ flags
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _
Public szDisplayName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=80)> _
Public szTypeName As String
End Structure

Private Declare Auto Function SHGetFileInfo Lib "shell32.dll" _
(ByVal pszPath As String, _
ByVal dwFileAttributes As Integer, _
ByRef psfi As SHFILEINFO, _
ByVal cbFileInfo As Integer, _
ByVal uFlags As Integer) As IntPtr

Private Const SHGFI_ICON = &H100
Private Const SHGFI_SMALLICON = &H1
Private Const SHGFI_LARGEICON = &H0 ' Large icon
Private Const MAX_PATH = 260

Private Sub AddImages(ByVal strFileName As String)

Dim shInfo As SHFILEINFO
shInfo = New SHFILEINFO()
shInfo.szDisplayName = New String(vbNullChar, MAX_PATH)
shInfo.szTypeName = New String(vbNullChar, 80)
Dim hIcon As IntPtr
hIcon = SHGetFileInfo(strFileName, 0, shInfo, Marshal.SizeOf(shInfo), SHGFI_ICON Or SHGFI_SMALLICON)
Dim MyIcon As Drawing.Bitmap
MyIcon = Drawing.Icon.FromHandle(shInfo.hIcon).ToBitmap
ImageList1.Images.Add(strFileName.ToString(), MyIcon)

End Sub

Private Sub AddAllFolders(ByVal TNode As TreeNode, ByVal FolderPath As String)
Try
For Each FolderNode As String In Directory.GetDirectories(FolderPath)
Dim SubFolderNode As TreeNode = TNode.Nodes.Add(FolderNode.Substring(FolderNode.LastIndexOf(""c) + 1))

SubFolderNode.Tag = FolderNode

SubFolderNode.Nodes.Add("Loading...")
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Tnode As TreeNode = TreeView1.Nodes.Add("(Drive C:)")
AddImages("C:\Windows")
AddAllFolders(Tnode, "C:")
ListView1.View = View.Details
' Add a column with width 80 and left alignment
ListView1.Columns.Add("File Name", 150, HorizontalAlignment.Left)
ListView1.Columns.Add("File Type", 80, HorizontalAlignment.Left)
ListView1.Columns.Add("Date Modified", 150, HorizontalAlignment.Left)
End Sub

Private Sub Treeview1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
Dim FileExtension As String
Dim SubItemIndex As Integer
Dim DateMod As String
ListView1.Items.Clear()
If TreeView1.SelectedNode.Nodes.Count 1 AndAlso TreeView1.SelectedNode.Nodes(0).Text "Loading..." Then

TreeView1.SelectedNode.Nodes.Clear()

AddAllFolders(TreeView1.SelectedNode, CStr(TreeView1.SelectedNode.Tag))

End If
Dim folder As String = CStr(e.Node.Tag)
If Not folder Is Nothing AndAlso IO.Directory.Exists(folder) Then
Try
For Each file As String In IO.Directory.GetFiles(folder)
e.Node.Nodes.Add(file.Substring(file.LastIndexOf(""c) + 1))

Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If

If Not folder Is Nothing AndAlso IO.Directory.Exists(folder) Then
Try
For Each file As String In IO.Directory.GetFiles(folder)
FileExtension = IO.Path.GetExtension(file)
DateMod = IO.File.GetLastWriteTime(file).ToString()
AddImages(file)
ListView1.Items.Add(file.Substring(file.LastIndexOf(""c) + 1), file.ToString())
ListView1.Items(SubItemIndex).SubItems.Add(FileExtension.ToString() & " File")
ListView1.Items(SubItemIndex).SubItems.Add(DateMod.ToString())
SubItemIndex += 1
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If

End Sub

Private Sub Treeview1_BeforeExpand(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewCancelEventArgs) Handles TreeView1.BeforeExpand

If e.Node.Nodes.Count 1 AndAlso e.Node.Nodes(0).Text "Loading..." Then

e.Node.Nodes.Clear()
AddAllFolders(e.Node, CStr(e.Node.Tag))

End If

End Sub

End Class
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
74
euh... en modifiant la propriété ImageList de ton TreeView
et SmallImageList de ton ListView

ces propriétés sont accessibles via le panneau des taches de ces controles (la petite fleche en haut a droite de ces controles quand tu les selectionne)
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
74
Exprime ton besoin, tes blocages.

les réponses se trouvent bien souvent dans la doc MSDN...
sachant que des exemples y sont très souvent dispo
Messages postés
200
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
24 mars 2012
2
Messages postés
41
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
28 mars 2008

ba je les ai deja exprimé mais je repete:

j'ai fait un treeview sous vb.net.
Dans Form1.vb j'ai ecrit le programme suivant:


Imports System



Imports



System.Collections.Generic


Imports



System.Text


Imports



System.Windows.Forms


Imports



System.IO


Imports



System.Diagnostics


Imports



System.Drawing


Imports



System.Data 



Public






Class
Form1


Private



Sub
TreeView1_AfterSelect(

ByVal
sender

As
System.Object,

ByVal
e

As
System.Windows.Forms.TreeViewEventArgs)

Handles
TreeView1.AfterSelect


Dim
z

As
TreeNode


For



Each
z

In
e.Node.NodesExplor(z)


Next
z


End



Sub






Private



Sub
Form1_Load(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles



MyBase
.LoadTreeView1.Nodes.Add(


"c:"
)TreeView1.Nodes.Add(


"d:"
)TreeView1.Nodes.Add(


"g:"
)TreeView1.Nodes.Add(


"p:"
)Explor(TreeView1.Nodes.Item(0))

Explor(TreeView1.Nodes.Item(1))

Explor(TreeView1.Nodes.Item(2))

Explor(TreeView1.Nodes.Item(3))


End



Sub






Private



Sub
TreeView1_AfterCheck(

ByVal
sender

As



Object
,

ByVal
e

As
_System.Windows.Forms.TreeViewEventArgs)


Handles
TreeView1.AfterCheck


For



Each
Tn

As
TreeNode

In
e.Node.NodesTn.Checked = e.Node.Checked


Next






End



Sub






Private



Sub
Button5_Click(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles
Button5.Click


End






End



Sub

End






Class

Et dans mon module:
Imports

System
Imports

System.IO
Imports

System.Windows.Forms
Imports

System.Drawing
Module

Module1

Sub Explor(
ByVal Node
As TreeNode)

TryNode.Nodes.Clear()

Dim s
As
String

For
Each s
In Directory.GetDirectories(Node.FullPath)Node.Nodes.Add(Path.GetFileName(s))

Next s

Catch

End
Try

End
SubEnd

Module

Donc je recupere en gros dans mon treeview le poste de travail de l'ordi.

Mais je n'arrive pas a mettre les icone pour identifier fichier, lecteur cd...

Et je dois vraiment garder le treeview.
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
74
ok, donc au programme:

possible de binder le treeview a l'imagelist systeme, et de lier les Nodes aux icones en utilisant les bons index...

possible aussi de dupliquer tes icones, en les ajoutant dans ton imagelist
Messages postés
41
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
28 mars 2008

En fait je suis debutant et meme avec les livres et ce que je vais voir sur internet j'ai beaucoup de mal.
Mais il existe pas un petit code que je mettrai dans Form1.vb pour le realiser. Je pensais que c'etait un truc qui se faisait couramment.
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
74
Messages postés
41
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
28 mars 2008

Merci je pense que c'est exactement ce que je cherche.
Un dernier truc. J'ai lu vite fait le document e tout a la fin il y a ecrit :
Add the Call to the AddImages function, in the TreeView_AfterSelect event, just underneath DateMod = IO.File.GetLastWriteTime(file).ToString()
Est ce que tu pourrais me preciser ce que je dois faire, ce que je dois ecrire plus precisement et ou?
Messages postés
41
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
28 mars 2008

j'avais pas vu ton dernier message et je l'ai recopié tel quel et ça marche mais sans icone!!!!
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
74
ca fonctionne bien chez moi, avec icones.
je parierai que tu n'a pas lié ton treeview et listview a un ImageList
Messages postés
41
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
28 mars 2008

J'ai mis un ImageList mais comment on fait pour les lier entre eux?
Messages postés
41
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
28 mars 2008

merci bp sa march.
sa ser a quoi en fait de cliker sur reponse acceptée? sa te fait gagner des points ou un truc comme sa?
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
74
ca permet de savoir que le thread est clos.

visible depuis la page de démarrage, ca permet de ne pas perdre de temps a aller voir un thread qui a trouvé sa réponse.