Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

YOMMEXPLORER.NET EXPLORER / EXPLORATEUR DE DOSSIERS RÉPERTOIRES FICHIERS (VRAIS ICONES, MENU CONTEXTUEL, RAFFRAICHISSEMENT AUTO, LIEN ENTRE ARBORESCENCE DOSSIERS ET LISTE FICHIER)


Information sur la source

Catégorie :Control Source .NET ( DotNet ) Classé sous : explorer, explorateur, dossier, fichier, repertoire Niveau : Expert Date de création : 02/06/2007 Vu / téléchargé: 9 916 / 1 113

Note :
9,6 / 10 - par 10 personnes
9,60 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (29)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Bonjour @ tous & toutes,

Voici la version .Net du YommExplorer OCX.
Reprise des anciennes fonctionnalités et ajout de nouvelles :

Pour le DirExplorer (arborscence répertoires)
- véritables icônes ( + racourcis , + partage)
- choix de la racine (bureau, poste de travail...)
- possibilité d'ajout d'un "racourcis" sous la racine
- checkbox 3 états
- affichage de fichiers
- menu contextuel windows
- raffraichissement automatique lorsqu'un dossier/fichier est créé par une autre appli ou via l'explorateur Windows
- récupération des nodes via énumération

Pour le FileExplorer (affichage des fichiers)
- véritables icônes ( + racourcis , + partage)
- possibilité de lier automatique le FileExplorer à un DirExplorer
- plusieur modes d'affichages : Liste, Détails, Icones et Mosaïque (cf impression écran pour ce dernier mode)
- menu contextuel + interraction automatique lors d'action du type copier/coller , nouveau document etc...
- possibilité de filtrer par extension
- possibilité d'afficher/masquer les dossiers
- possibilité d'afficher/masquer les éléments cachés
- utilisation des racourcis clavier (CTR+C, CTR+V , F2 ...)
- checkbox 2 états
- en mode détail : possibilité de modifier les colonnes affichés par click droit sur l'entête
- gestion du tri ("réorganiser par" ou par click sur l'entête de colonne en mode détail)
- récupération des items via énumération

et j'en oublie peut être...

bref tout plein de chose pour faire un vrai navigation dans une appli...


 

Source

  • '-------------------------------------------------------
  • 'Exemples DirExplorer
  • '-------------------------------------------------------
  • 'exemple pour obtenir la node sélectionnée:
  • MsgBox(DirExplorer1.SelectedItem.Text)
  • 'exemple pour obtenir les nodes cochées:
  • Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
  • MsgForNodeChecked(DirExplorer1.Root)
  • End Sub
  • Private Sub MsgForNodeChecked(ByVal Node As YommExplorer.DirExplorerNode)
  • Dim NodeFille As YommExplorer.DirExplorerNode
  • For Each NodeFille In Node.Nodes
  • If NodeFille.IsExpanded = True Then
  • MsgForNodeChecked(NodeFille)
  • ElseIf NodeFille.CheckState = CheckState.Checked Then
  • MsgBox(NodeFille.Text)
  • End If
  • Next
  • If Node.CheckState = CheckState.Checked Then MsgBox(Node.Text)
  • End Sub
  • '-------------------------------------------------------
  • 'Exemples FileExplorer
  • '-------------------------------------------------------
  • 'exemple pour récupérer les fichiers
  • Dim fileitem As YommExplorer.FileExplorerItem
  • For Each fileitem In FileExplorer1.Items
  • Debug.Print(fileitem.Text)
  • Next
  • 'exemple pour récupérer les items cochés
  • Dim fileitem As YommExplorer.FileExplorerItem
  • For Each fileitem In FileExplorer1.Items
  • If fileitem.Checked = True Then Debug.Print(fileitem.Text)
  • Next
'-------------------------------------------------------
'Exemples DirExplorer
'-------------------------------------------------------

'exemple pour obtenir la node sélectionnée:
    MsgBox(DirExplorer1.SelectedItem.Text)

'exemple pour obtenir les nodes cochées:
    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        MsgForNodeChecked(DirExplorer1.Root)
    End Sub

    Private Sub MsgForNodeChecked(ByVal Node As YommExplorer.DirExplorerNode)

        Dim NodeFille As YommExplorer.DirExplorerNode

        For Each NodeFille In Node.Nodes
            If NodeFille.IsExpanded = True Then
                MsgForNodeChecked(NodeFille)
            ElseIf NodeFille.CheckState = CheckState.Checked Then
                MsgBox(NodeFille.Text)
            End If
        Next

        If Node.CheckState = CheckState.Checked Then MsgBox(Node.Text)

    End Sub

'-------------------------------------------------------
'Exemples FileExplorer
'-------------------------------------------------------

'exemple pour récupérer les fichiers
    Dim fileitem As YommExplorer.FileExplorerItem

    For Each fileitem In FileExplorer1.Items
       Debug.Print(fileitem.Text)
    Next

'exemple pour récupérer les items cochés
    Dim fileitem As YommExplorer.FileExplorerItem

    For Each fileitem In FileExplorer1.Items
        If fileitem.Checked = True Then Debug.Print(fileitem.Text)
    Next

Conclusion

les notions abordées ici :

- héritage d'un controle pour en faire un contrôle perso
- héritage de type pour ajouter et/ou modifier des types (exemple : TriStateTreeNode hérite de Node mais permet des nodes avec checkbox 3 états)
- surchage de fonction (exemple : fonction New de la class ClsDirectory)
- subclassing
- traitement des icones, informations des fichiers etc...
- ajout d'icône dans le header d'un listview
- gestion du menu contextuel Windows et du menu nouveau
- gestion des interfaces : IUnknown, IShellDetails, IEnumIDList, IShellFolder, IcontextMenu, IcontextMenu2, IcontextMenu3, IShellExtInit, IDropTarget
- implémentation d'une propriété de type enumeration (exemple : FileExplorerItemEnumerable)
- gestion du FileSystemWatcher et des threads différents

et bien d'autres encore...
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de yomm le 02/06/2007 16:16:09

Salut @ tous,

j'ai ajouté 2 jpg dans le zip pour vous donner une idée plus précise de DirExplorer et du FileExplore:

DirExplorer.jpg
FileExplorer.jpg

J'espère que ce source vous sera util !

@+ et bonne prog @ vous

signaler à un administrateur
Commentaire de Willi le 02/06/2007 18:25:05 administrateur CS

Ah enfin une "véritable" source digne de ce nom sa faisait longtemps. Merci :)
Qui plus est bien codé est intéressante sur de nombreux points...

Bonne continuation ++

signaler à un administrateur
Commentaire de badrbadr le 02/06/2007 19:22:17

Bravo, même pas besoin de regarder le code source pour réaliser toute la beauté de ce programme.
Merci,...et direct dans les favoris.

signaler à un administrateur
Commentaire de yomm le 03/06/2007 02:27:00

merci @ vous deux ça fait plaisir, il semblerait que je n'aie pas fait cela pour rien...
;-)

signaler à un administrateur
Commentaire de hideme le 11/06/2007 15:52:34

Excellent. J'ai fait en explorer look like en moins d'une journée et àprés avoir renomé ton projet avec ce que ça implique pour un débutant vb.net.

Deux choses quand même:
1- Peu de commentaires dans ton source; ça n'aide pas pour progresser. Point positif: les régions.
2- As-tu prévu les infobulles? Car mon projet tourne essentiellement autours. Avec l'association ToolTip-FileView classique, ça ne fonctionne pas; il semble que tu hérite FileEplorer d'un UserControl primaire en y greffant ListView et autres mais comment utiliser ListView.GetNodeAt() par exemple.
Encore un truc: J'ai souvenir du projet de clonage Explorateur en C# dans "code(R) 2004". Quelqu'un a-t-il l'article sous la main?

Encore merci pour ce travail.

signaler à un administrateur
Commentaire de yomm le 11/06/2007 21:00:37

SAlut Hideme

1- concernant ce point je te l'accorde, pout un fois j'ai pas fait beaucoup d'efforts coté commentaires, je vais essayé d'en ajouter histoire que tout cela devienne plus clair. Mais tu sais, c'est mon premier dev en .Net et j'étais plus pressé de le poster que de le commenter ;-)

2- concernant le tooltip text je n'ai rien paramétré de plus que ce que n'offre par défaut les contrôles ListView et TreeView. Par contre je ne vois pas le rapport entre ToolTip et GetNodeAt...surtout sur un ListView...Tu voulais pas plutot dire Treeview.GetNodeAt() ? Si tel est le cas, tu peux ajouter une propriété au direxplorer du genre:

    <Browsable(False)> _
    Public ReadOnly Property GetNodeAt(ByVal X As Integer, ByVal Y As Integer) As DirExplorerNode
        Get
            Return New DirExplorerNode(CType(TView.GetNodeAt(X, Y), TriStateTreeNode))
        End Get
    End Property

Voilà, par contre j'avoue, pour le moment je n'ai pas implémenté les événements liés aux contrôles auxquels se rapportent le DirExplorer et FileExplorer à savoir des événements du genre Expand, Check et autres...

@+

signaler à un administrateur
Commentaire de hideme le 11/06/2007 22:26:04

Coucouts Yomm

1- T'es le bienvenue. Vu la qualité de ton projet, c'est une invitation et non un reproche.
2- Ce que je lie c'est un ToolTip avec un TreeView, dans la form l'exemple de krosoft donne:

   Private Sub TreeView1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TreeView1.MouseMove

        ' Determine the node that is currently at the mouse pointer location.
        Dim theNode As TreeNode = TreeView1.GetNodeAt(e.X, e.Y)

        ' Check if mouse is paused over an actual node.
        If Not (theNode Is Nothing) Then
            ' Only update the ToolTip if tip needs to be changed.
            If (theNode.Tag <> ToolTip1.GetToolTip(TreeView1)) Then
                ToolTip1.SetToolTip(TreeView1, theNode.Tag)
            End If
        Else
            ' Mouse is not paused over a node. Therefore, clear the ToolTip.
            ToolTip1.SetToolTip(TreeView1, "")
        End If

    End Sub


Et ça marche. Je voudrais avoir une infobulle pour chaque élément d'un DirExplorer et FileExplorer.
Je vais voire pour appliquer ton bout de code sur les deux...

Merci

PS: Je me fais exigeant :) Penses-tu ajouter les miniatures. Non, sérieux, quelle démarche as-tu pour coder aussi proprement?

A+

signaler à un administrateur
Commentaire de yomm le 12/06/2007 19:39:47

>>re Hideme

Je comprends un peu mieux ton besoin;
petite question, as-tu besoin d'un Tooltip différent pour chaque item ou doit-il être unique à tout le contrôle ?

PS : pour un treeview tu peux faire TreeView1.Nodes(i).ToolTipText, je suis en train de faire des tests pour faire de même avec le DirExplorer.

signaler à un administrateur
Commentaire de yomm le 12/06/2007 20:04:44

>>Hideme

Je viens de faire des tests pour le DirExplorer, voilà le résutlat:

dans la class DirExplorerNode (fichier "Declarations")
il faut ajouter la propriété suivante :
------------------------------------------------------------------------------
    Public Property ToolTipText() As String
        Get
            Return m_Node.ToolTipText
       &