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

VB.NET Discussion :

Infobulle dans TreeView


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Par défaut Infobulle dans TreeView
    Bonjour,

    Actuellement je gère un TreeView dans mon Form qui est remplie directement depuis un Dico. Le dico est remplie en amont par une Classe Unite avec le propriétés suivante (Name, LengthTutu, LengthTiti, LenghtToto). La clé de mon dico est le Name de ma classe et ce qui est remplie dans mon TreeView est le Name de ma classe. Je souhaite maintenant réaliser l'ouverture d'une infobulle lorsque je passe ma souris sur l'une de mes branches de mon TreeView qui va directement prendre le Name de ma branche, aller dans mon dico avec la clé qui se trouve etre le Name de ma branche et m'afficher dans mon infobulle les propriétés LengthTutu, LengthTiti et LenghtToto qui se situe dans ma classe qui se trouve dans mon dico.

    Voila mon programme qui marche et m'affiche dans mon TreeView la liste qui se trouve dans mon Dico :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
        Public Sub TriUnite()
            DicoUnite.Clear()
            For Each mAlarme As Alarme In DicoAlarme.Values
                If DicoUnite.ContainsKey(mAlarme.Location) = False Then
                    Dim mUnite As New Unite
                    mUnite.Name = mAlarme.Location
                    DicoUnite.Add(mUnite.Name, mUnite)
     
                    If mAlarme.Priority = "Urgent" Then
                        DicoUnite(mAlarme.Location).LengthUrgent += 1
                    ElseIf mAlarme.Priority = "High" Then
                        DicoUnite(mAlarme.Location).LengthHigh += 1
                    ElseIf mAlarme.Priority = "Low" Then
                        DicoUnite(mAlarme.Location).LengthLow += 1
                    End If
                Else
                    If mAlarme.Priority = "Urgent" Then
                        DicoUnite(mAlarme.Location).LengthUrgent += 1
                    ElseIf mAlarme.Priority = "High" Then
                        DicoUnite(mAlarme.Location).LengthHigh += 1
                    ElseIf mAlarme.Priority = "Low" Then
                        DicoUnite(mAlarme.Location).LengthLow += 1
                    End If
                End If
            Next
        End Sub
     
        Public Sub RemplireListImageTreeView()
            Dim myImageList As New ImageList()
            myImageList.Images.Add(DicoImageBis.Item("Image0"))
            myImageList.Images.Add(DicoImageBis.Item("Image2"))
            myImageList.Images.Add(DicoImageBis.Item("Image4"))
            FenGestionnaire.TreeViewUnite.ImageList = myImageList
        End Sub
     
        Public Sub RemplireLocationUnite()
            Dim NiveauUrgent As Boolean = False
            Dim NiveauHigh As Boolean = False
            Dim NiveauLow As Boolean = False
     
            FenGestionnaire.TreeViewUnite.Nodes.Clear()
            FenGestionnaire.TreeViewUnite.Nodes.Add("Simulateur", "Simulateur")
     
            FenGestionnaire.TreeViewUnite.Nodes("Simulateur").ImageIndex = 0
            FenGestionnaire.TreeViewUnite.Nodes("Simulateur").SelectedImageIndex = 0
            For Each mUnite As Unite In DicoUnite.Values
                FenGestionnaire.TreeViewUnite.Nodes("Simulateur").Nodes.Add(mUnite.Name, mUnite.Name & "(" & mUnite.LengthUrgent + mUnite.LengthHigh + mUnite.LengthLow & ")")
                If mUnite.LengthUrgent > 0 Then
                    NiveauUrgent = True
                    FenGestionnaire.TreeViewUnite.Nodes("Simulateur").Nodes(mUnite.Name).ImageIndex = 0
                    FenGestionnaire.TreeViewUnite.Nodes("Simulateur").Nodes(mUnite.Name).SelectedImageIndex = 0
                ElseIf mUnite.LengthHigh > 0 Then
                    NiveauHigh = True
                    FenGestionnaire.TreeViewUnite.Nodes("Simulateur").Nodes(mUnite.Name).ImageIndex = 1
                    FenGestionnaire.TreeViewUnite.Nodes("Simulateur").Nodes(mUnite.Name).SelectedImageIndex = 1
                ElseIf mUnite.LengthLow > 0 Then
                    NiveauLow = True
                    FenGestionnaire.TreeViewUnite.Nodes("Simulateur").Nodes(mUnite.Name).ImageIndex = 2
                    FenGestionnaire.TreeViewUnite.Nodes("Simulateur").Nodes(mUnite.Name).SelectedImageIndex = 2
                End If
            Next
            If NiveauUrgent = True Then
                FenGestionnaire.TreeViewUnite.Nodes("Simulateur").ImageIndex = 0
                FenGestionnaire.TreeViewUnite.Nodes("Simulateur").SelectedImageIndex = 0
            ElseIf NiveauHigh = True Then
                FenGestionnaire.TreeViewUnite.Nodes("Simulateur").ImageIndex = 1
                FenGestionnaire.TreeViewUnite.Nodes("Simulateur").SelectedImageIndex = 1
            ElseIf NiveauLow = True Then
                FenGestionnaire.TreeViewUnite.Nodes("Simulateur").ImageIndex = 2
                FenGestionnaire.TreeViewUnite.Nodes("Simulateur").SelectedImageIndex = 2
            End If
     
        End Sub
    Voila mes 3 principales procédures qui sont exécutées lors d'un appui sur un bouton, la premier permet de rafraichir mon Dico a chaque nouvelle appuie sur le bouton, la seconde permet d'importer des images dans la ListImage de mon TreeView et la dernière permet de gérer l'affichage des images en fonction de certain critere ainsi que le remplissage de mon Treeview.

    Voila ma classe Unite:
    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
    41
    42
    43
    44
    45
    46
    Public Class Unite
        Private msName As String
        Private msLengthUrgent As Integer
        Private msLengthHigh As Integer
        Private msLengthLow As Integer
     
        Public Property Name() As String
            Get
                Return msName
            End Get
     
            Set(ByVal value As String)
                msName = value
            End Set
        End Property
     
        Public Property LengthUrgent() As Integer
            Get
                Return msLengthUrgent
            End Get
     
            Set(ByVal value As Integer)
                msLengthUrgent = value
            End Set
        End Property
     
        Public Property LengthHigh() As Integer
            Get
                Return msLengthHigh
            End Get
     
            Set(ByVal value As Integer)
                msLengthHigh = value
            End Set
        End Property
     
        Public Property LengthLow() As Integer
            Get
                Return msLengthLow
            End Get
     
            Set(ByVal value As Integer)
                msLengthLow = value
            End Set
        End Property
    End Class
    Merci d'avance pour vos suggestions.

    PS: J'ai aucune idée de comment faire une infobulle et je vais commencer a regarder de mon coté.

  2. #2
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Par défaut
    Solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Public Sub GererInfoBulleDansTreeViewUnite(e As System.Windows.Forms.TreeNodeMouseHoverEventArgs)
            If e.Node.Name <> "Simulateur" Then
                Dim mMessage As String
                mMessage = "Urgent " & DicoUnite(e.Node.Name).LengthUrgent & vbCrLf & "High " & DicoUnite(e.Node.Name).LengthHigh & vbCrLf & "Low " & DicoUnite(e.Node.Name).LengthLow
                FenGestionnaire.ToolTipUnite.SetToolTip(FenGestionnaire.TreeViewUnite, mMessage)
            Else
                FenGestionnaire.ToolTipUnite.RemoveAll()
            End If
        End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub TreeViewUnite_NodeMouseHover(sender As Object, e As System.Windows.Forms.TreeNodeMouseHoverEventArgs) Handles TreeViewUnite.NodeMouseHover
            GererInfoBulleDansTreeViewUnite(e)
        End Sub

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Info sans rapport avec le problème.
    Il est possible de simplifier le code (pour une meilleure relecture et maintenance)

    La procédure "TriUnite" simplifiée.
    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
        Public Sub TriUnite()
            DicoUnite.Clear()
            For Each mAlarme As alarme In DicoAlarme.Values
                With mAlarme
                    If Not DicoUnite.ContainsKey(.Location) Then
                        DicoUnite.Add(.Location, New Unite(.Location))
                    End If
                    Select Case .Priority
                        Case "Urgent"
                            DicoUnite(.Location).LengthUrgent += 1
                        Case "High"
                            DicoUnite(.Location).LengthHigh += 1
                        Case "Low"
                            DicoUnite(.Location).LengthLow += 1
                    End Select
                End With
            Next
        End Sub
    Un constructeur avec paramètre dans la classe. (pour une création et utilisation immédiate)
    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
    Public Class Unite
        Private msName As String
        Private msLengthUrgent As Integer
        Private msLengthHigh As Integer
        Private msLengthLow As Integer
     
        Public Sub New()
        End Sub
        ''' <summary>Cré une instance nommé.</summary>
        ''' <param name="UnNom">Le nom qui sera attribué à l'instance.</param>
        Public Sub New(ByVal UnNom As String)
            Name = UnNom
        End Sub
     
        Public Property Name() As String
    ' ...
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

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

Discussions similaires

  1. [C#] Problème duplication intempestive dans treeview
    Par LE NEINDRE dans le forum ASP.NET
    Réponses: 6
    Dernier message: 12/06/2006, 10h23
  2. Erreur d'execution 91 dans treeview
    Par walden dans le forum Access
    Réponses: 4
    Dernier message: 18/05/2006, 17h00
  3. image de fond dans treeview
    Par chancourt dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/08/2005, 16h11
  4. menu contextuel dans treeview
    Par GAGNON dans le forum IHM
    Réponses: 6
    Dernier message: 08/04/2005, 18h11
  5. icon dans treeview ou listview
    Par Sebinou dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2004, 00h29

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