IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

TreeNode folder toujours ouvert?


Sujet :

Windows Forms

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Points : 293
    Points
    293
    Par défaut TreeNode folder toujours ouvert?
    Bonjour,

    j'étudie les évenements treenview et je voudrais que mon folder s'ouvert seulement quant il est sélectionné. Présentement il s'ouvre quand je le selectionne et reste ouvert quand je vais en selectionner un autre, et moi je voudrais qu'il se referme.

    merci beaucoup

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Le code suivant devrait donner à peu près le comportement que tu décris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    	' Pour empêcher qu'un noeud non-sélectionné soit déplié
    	Private Sub treeView1_BeforeExpand(ByVal sender As Object, ByVal e As TreeViewCancelEventArgs) Handles treeView1.BeforeExpand
    		If Not e.Node.IsSelected Then
    			e.Cancel = True
    		End If
    	End Sub
     
    	' Pour déplier automatiquement le noeud sélectionné
    	Private Sub treeView1_AfterSelect(ByVal sender As Object, ByVal e As TreeViewEventArgs) Handles treeView1.AfterSelect
    		e.Node.Expand()
    	End Sub
     
    	' Pour replier le noeud actuellement sélectionné avant de sélectionner le nouveau
    	Private Sub treeView1_BeforeSelect(ByVal sender As Object, ByVal e As TreeViewCancelEventArgs) Handles treeView1.BeforeSelect
    		Dim current As TreeNode = treeView1.SelectedNode
    		If current <> Nothing AndAlso Not IsChildNode(current, e.Node) Then
    			CollapseNodesUpToLevel(current, e.Node.Level - 1)
    		End If
    	End Sub
     
    	' Replie les noeuds à partir du noeud sélectionné en remontant jusqu'au niveau indiqué
    	Private Sub CollapseNodesUpToLevel(ByVal node As TreeNode, ByVal level As Integer)
    		Dim tmp As TreeNode = node
    		While tmp <> Nothing AndAlso tmp.Level > level
    			tmp.Collapse()
    			tmp = tmp.Parent
    		End While
    	End Sub
     
    	' Vérifie si un noeud est un descendant d'un autre
    	Private Function IsChildNode(ByVal parent As TreeNode, ByVal child As TreeNode) As Boolean
    		For Each node As TreeNode In parent.Nodes
    			If node = child Then
    				Return True
            ElseIf IsChildNode(node, child) Then
    				Return True
    			End If
    		Next
    		Return False
    	End Function
    Il y a peut-être quelques ajustements à faire, mais l'idée est là...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA] Excel toujours ouvert après traitement
    Par Trinou dans le forum SDK
    Réponses: 1
    Dernier message: 24/11/2009, 12h03
  2. [ToolTip] - toujours ouvert
    Par Anto03 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 03/03/2009, 15h07
  3. Réponses: 1
    Dernier message: 20/08/2007, 18h22
  4. Ports toujours ouverts ?
    Par wolfjeremy dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2007, 10h54
  5. savoir si une fenetre est toujours ouverte
    Par coelho dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 24/11/2006, 19h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo