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 :

TreeView clic sur item [Débutant]


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 48
    Points : 33
    Points
    33
    Par défaut TreeView clic sur item
    Bonjour,


    J'essais depuis un petit moment de créer un évènement lors que je clic sur un item de treeview.

    Donc j'ai par exemple un treeview de ce type


    Projet
    Toto
    Titi
    Tutu
    Tata

    J'aimerais lorsque je double clic sur Titi, sa m'ouvre une fenêtre.

    Mon problème est que je n'arrive pas à faire un test sur l'item actuellement en sélection dans le treeview. Toute les discutions en rapport avec sa sur internet ne m'on pas aider...

    Je travail en VB.net 2010.

    Comment peux on tester avec un IF l'élément du treeview selectionné.

    J'ai penser quelque chose comme sa

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       ' 4) Ouvertur de la fenêtre matériel
     
        Sub OpenWindowMatos() Handles Me.MouseDoubleClick
     
            If Montreeview.Itemselectionner = "Toto" Then  (sa marche pas ici)
     
                MsgBox("ueeee")
     
     
            End If
     
        End Sub
    Quelqu'un à une idée ?

    Par avancer merci


    Meilleures salutations

  2. #2
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Private Sub TreeView1_MouseDoubleClick(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TreeView1.MouseDoubleClick
     
            Dim item As TreeNode = TreeView1.GetNodeAt(e.Location)
            If item IsNot Nothing Then
                If item.text = "Toto" Then
                    MsgBox(item.Text)
                End If
            End If
     
        End Sub

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 48
    Points : 33
    Points
    33
    Par défaut
    Re,


    Merci pour votre réponse.

    Mon problème est que je n'ai pas le type TreeNode de disponible il me propose de le modifier en TypeCode ou Tilemode mais cela génère des erreur dans la procédure.

    Savez vous pourquoi je peux pas utiliser le TreeNode ?


    Meilleures salutations

  4. #4
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Si c'est un projet Winform, il devrait te proposer d'importer l'assembly System.Windows.Forms qui contient la classe TreeNode.. Pour savoir si l'assembly est référencée, change la ligne par celle-ci (ça devrait marcher)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim item As System.Windows.Forms.TreeNode = TreeView1.GetNodeAt(e.Location)
    Si ce n'est pas un projet winform, l'assembly System.Windows.Forms n'est pas référencée d'office donc il faut que tu l'importe toi même en cliquant droit sur ton projet, "Ajouter une référence", onglet ".NET", cherche "System.Windows.Forms" puis importe la.. Après une regénération du projet ca devrait marcher.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 48
    Points : 33
    Points
    33
    Par défaut
    Re,

    Merci encore pour la réponse.

    Mais cela ne fonctionne toujours pas....


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       Private Sub TreeView1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As MouseEventArgs) Handles Me.MouseDoubleClick
     
            Dim item As System.Windows.Forms.TreeNode = Arborescence.GetNodeAt(e.Location)
     
            If item IsNot Nothing Then
                MsgBox(item.Text)
            End If
     
        End Sub
     
     
    End Class
    Le problème vient de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          Dim item As System.Windows.Forms.TreeNode = Arborescence.GetNodeAt(e.Location)

    Arborescence étant le nom de mon TreeView. Il me dit que
    GetNodeAt n'est pas membre de Systeme.windows.Intput.Controls.Treeview

    Mon interface est faite sur Blend 4 en WPF. je creer le TreeView par code sur visual basic et pas en XAML

    Une idée?

  6. #6
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Je ne connais pas bien WPF.. Est ce qu'on parle du même composant TreeView? Le seul que je connaisse est le System.Windows.Forms.TreeView et non Systeme.windows.Intput.Controls.Treeview..

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 48
    Points : 33
    Points
    33
    Par défaut
    Re,


    Pas exactement la même chose. par contre si je fait comme sa

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Private Sub TreeView1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Arborescence.NodeMouseClick
            Dim item As System.Windows.Forms.TreeNode = Me.GetNodeAt(e.Location)
     
            If item IsNot Nothing Then
                If item.Text = "Toto" Then
                    MsgBox(item.Text)
                End If
            End If
     
        End Sub
    Le Handless n'est pas accepté Handles Arborescence.NodeMouseClick

    Il dit que l’évènement est introuvable

  8. #8
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Me.GetNodeAt(e.Location)
    Handles Me.MouseDoubleClick
    Est ce que tu écrit ce code dans une classe héritée de TreeView?

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 48
    Points : 33
    Points
    33
    Par défaut
    Re,


    Oui le code est dans une classe héritée

  10. #10
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Quelle est sa classe mère ?

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 48
    Points : 33
    Points
    33
    Par défaut
    Re,


    Nous avons dans le code d'un feuille WPF

    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
    Imports System
    Imports System.IO
    Imports System.Net
    Imports System.Windows
    Imports System.Windows.Controls
    Imports System.Windows.Data
    Imports System.Windows.Media
    Imports System.Windows.Media.Animation
    Imports System.Windows.Navigation
    Imports System.Windows.Forms
     
    Partial Public Class AcceuilProjet
        Inherits Window
     
     
        Public Sub New()
            MyBase.New()
     
            Me.InitializeComponent()
     
            Me.Arborescence.Items.Add(New TreeProject(Me.Arborescence))
     
     
     
     
     
     
            ' Insérez le code requis pour la création d’objet sous ce point.
        End Sub
        Sub mouseclick() Handles Arborescence.MouseRightButtonDown
     
     
        End Sub
     
    End Class

    Puis, la classe de mon TreeView


    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    '                                                                                                   ¦
    'Titre: Gestion du TreeView du projet                                                               ¦
    '                                                                                                   ¦
    ' Programmeur: Bruno Scheidegger                            'Client: XXX                     ¦
    '                                                                                                   ¦
    'Création le 11.04.2012                                     'Modification le 12.04.2012             ¦
    '                                                           'Modifié par: Bruno Scheidegger         ¦
    '----------------------------------------------------------------------------------------------------
    Imports System
    Imports System.Windows.Media.Drawing
    Imports System.Windows
    Imports System.IO
    Imports System.Windows.Controls
    Imports System.Windows.Forms
     
    Public Class TreeProject
     
     
        'héritage sur l'objet TreeView Item
        Inherits TreeViewItem
     
        'Déclaration des varibles utilisées
     
        Dim Arborescence As System.Windows.Controls.TreeView    'TreeView de la visualisation
        Dim delete As New System.Windows.Controls.MenuItem      'Variable de delet du menu contextuel (clic droit sur un item du treeview)
        Dim add As New System.Windows.Controls.MenuItem         'Variable d'ajout nouvelle presse du menu contextuel (clic droit sur un item du treeview)
        Dim Rename As New System.Windows.Controls.MenuItem      'Variable de rename d'une presse du menu contextuel (clic droit sur un item du treeview)
     
        'Création du treeView_________________________________________________________________________________________________________________________________________________________________________________
     
        Public Sub New(ByVal Projet_1 As System.Windows.Controls.TreeView)
     
            'Attribution du nom de projet par défaut à la création
            Arborescence = Projet_1
            'Affectation du nom à l'item principl du treeview
            Me.Header = "Projet " & (Projet_1.Items.Count + 1)
            'Création de l'objet (TreeView si l'élement est dépliable ou TExt bloc si il ne l'est pas)
            Dim press As New TreeViewItem
            'Affectation du nom du premier enfant du treeview
            press.Header = "Presse"
            'Ajout de du nouvel item
            Me.Items.Add(press)
            'Même procèdure pour tout les autres élement composant le treeview
     
            Dim commande As New TextBlock
            commande.Text = "Commande"
            press.Items.Add(commande)
     
            Dim materiel As New TreeViewItem
            materiel.Header = "Materiel"
            press.Items.Add(materiel)
     
            Dim text As New TextBlock
            text.Text = "D410"
            materiel.Items.Add(text)
            text = New TextBlock
            text.Text = "TM31"
            materiel.Items.Add(text)
            text = New TextBlock
            text.Text = "PC"
            materiel.Items.Add(text)
     
            Dim Variable As New TextBlock
            Variable.Text = "Variable"
            press.Items.Add(Variable)
     
            Dim Prg As New TreeViewItem
            Prg.Header = "Programme"
            press.Items.Add(Prg)
     
            'Procèdure d'ouvertur du menu contextuel________________________________________________________________________________________________________________________________________________________
     
            'Création du menu
            Me.ContextMenu = New System.Windows.Controls.ContextMenu
            'Ajout du bouton "Ajouter une presse"
            add.Header = "Ajouter une presse"
            add.Name = "AddButton"
            Me.ContextMenu.Items.Add(add)
            'Ajout du bouton "Effacer"
            delete.Header = "Effacer"
            delete.Name = "DeleteButton"
            Me.ContextMenu.Items.Add(delete)
            'Ajout du bouton "Renammer"
            Rename.Header = "Renommer"
            delete.Name = "RenameButton"
            Me.ContextMenu.Items.Add(Rename)
     
            'Gestion de l'évenement clic de souris sur les boutons du menu contextuel (une instruction similaire par bouton)
     
            AddHandler Me.add.Click, AddressOf add_press
            AddHandler Me.delete.Click, AddressOf DelPress
            AddHandler Me.Rename.Click, AddressOf RenamePress
     
     
     
        End Sub
     
        ' 1) Macro d'ajout de presse (nouvelle arborescence de projet)
        Private Sub add_press()
            Me.Arborescence.Items.Add(New TreeProject(Me.Arborescence))
        End Sub
     
        ' 2) Macro de suppression d'une presse du TreeView principal
        Private Sub DelPress()
     
            'Contrôl si il y a plus de une presse (Eviter de supprimmer toutes les presses et ne plus avoir d'élement dans le treeview
     
            If Me.Arborescence.Items.Count > 1 Then
                Me.Arborescence.Items.Remove(Me)
            End If
     
        End Sub
     
        ' 3) Macro de rename de presse
        Private Sub RenamePress()
     
            'Déclration de variables
     
            Dim tmp As String   'Nouveau nom
     
            'Ouverture d'une fenêtre de rename
            tmp = Interaction.InputBox("Renommez votre projet", "Renommer", Me.Header)
     
            'Vérifie qu'on ne rename pas avec rien
            If tmp <> "" And tmp <> Me.Header Then
     
                'Contrôl si une presse ne comporte pas déjà ce nom
     
                For Each element As TreeViewItem In Arborescence.Items
                    If element.Header = tmp Then
     
                        MsgBox("Un projet porte déjà ce nom")   'Message d'erreur en cas de doublon
                        Exit Sub
                    End If
     
                Next
     
                'Changement de nom
     
                Me.Header = tmp
     
            End If
     
        End Sub
     
        ' 4) Ouvertur de la fenêtre matériel
     
        Private Sub TreeView1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Arborescence.NodeMouseClick
            Dim item As System.Windows.Forms.TreeNode = Me.GetNodeAt(e.Location)
     
            If item IsNot Nothing Then
                If item.Text = "Toto" Then
                    MsgBox(item.Text)
                End If
            End If
     
        End Sub
     
        Private Function GetNodeAt(ByVal point As Drawing.Point) As TreeNode
            Throw New NotImplementedException
        End Function
     
     
    End Class

  12. #12
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Re,

    Et ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Private Sub Me_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs) Handles Me.MouseDoubleClick
            Dim item As TreeViewItem = TreeView1.SelectedItem
            If item IsNot Nothing Then
     
                MsgBox(item.Header)
     
            End If
        End Sub

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 48
    Points : 33
    Points
    33
    Par défaut
    Re,

    Merci pour votre réponse et désolé du temps que j'ai mis a répondre...

    J'ai finalement concocté une petite solution comme suit:

    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
       Sub treeitemclick(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
            Dim type As System.Windows.Controls.TreeView = DirectCast(sender, System.Windows.Controls.TreeView)
     
            If type.SelectedItem.GetType.ToString() = "System.Windows.Controls.TreeViewItem" Then
                Dim tmp As TreeViewItem = DirectCast(type.SelectedItem, TreeViewItem)
                If tmp.Header = "Whatelse" Then
                    MsgBox(tmp.Header)
                ElseIf tmp.Header = "Whynot" Then
                    MsgBox(tmp.Header)
                ElseIf tmp.Header = "Pkpas" Then
                    MsgBox(tmp.Header)
                End If
            Else
                Dim tmp As TextBlock = DirectCast(type.SelectedItem, TextBlock)
                If tmp.Text = "Muarf" Then
                    MsgBox(tmp.Text)
                ElseIf tmp.Text = "Didi" Then
                    MsgBox(tmp.Text)
                ElseIf tmp.Text = "To" Then
                    MsgBox(tmp.Text)
                ElseIf tmp.Text = "Tata" Then
                    MsgBox(tmp.Text)
                ElseIf tmp.Text = "Toto" Then
                    MsgBox(tmp.GetType.ToString())
                End If
            End If
     
     
        End Sub
    Sa fonctionne nickel. lorsque je double clic sur un des élements composant mon treeview, sa effectue l'action liée (pas programmée ici)

    je post la solution dès fois que sa peut servir à quelqu'un une fois...

    Encore merci pour les réponses

    Meilleure salutations

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

Discussions similaires

  1. GridView clic sur item
    Par l-amoureu dans le forum Android
    Réponses: 2
    Dernier message: 18/02/2011, 09h21
  2. clic sur item listview fonctionne pas
    Par JCMANSION dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 07/12/2010, 13h06
  3. [D7] Treeview: Popup uniquement sur items
    Par dacid dans le forum Delphi
    Réponses: 1
    Dernier message: 08/06/2006, 17h44
  4. Réponses: 5
    Dernier message: 08/06/2006, 16h11
  5. [C#] SelectIndexChanged, clic sur le même item ...
    Par jacpapac dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/04/2006, 17h33

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