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 :

[VB.NET] Selectionner un noeud du treeview par le code [Trucs & Astuces]


Sujet :

Windows Forms

  1. #1
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 165
    Par défaut [VB.NET] Selectionner un noeud du treeview par le code
    Bonjour,

    j'ai un treeview que j'utilise pour explorer les données d'une base Acces pour un projet en VB.NET,

    j'ai remarqué que lorsqu'on met en place un menu contextuel sur le treeview il y un problème qui se pose:

    -le noeud selectionné qui se trouve sous la souris quand on fait un clic droit n'est pas le noeud selectionné "réel",

    du coup j'ai essayé de trouver une solution en forçant la selection d'un noeud au niveau du code ( evenement mouse down ) mais je n'ai rien trouvé, pas de méthode permettant de donner le focus à un noeud précis du treeview, pourtant cela aurait pu résoudre mon problème lors d'un clic droit sur un noeud

    si vous avez une solution pour forcer la selection d'un noeud au niveau du code je suis preneur

    Merci par avance

  2. #2
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    Essaie plutot avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
            nodCurrent = sender.selectednode
        end sub

  3. #3
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 165
    Par défaut
    salut,

    merci mais ça ne fonctionne pas, il ne reconnait pas "nodCurrent"

    tu es sûr pour la syntaxe ?

  4. #4
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    faut declarer nodCurrent en tant que treenode dans la classe de la form puis l'utiliser la ou tu veux, il represente le node reelement selectionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    dim nodCurrent as treenode
    ...
    Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
            nodCurrent = sender.selectednode
    end sub
    ...
    Private sub KiCestLeNodeCourant
    msgbox nodCurrent.text
    end sub

  5. #5
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 165
    Par défaut
    en fait je ne cherche pas à savoir quel est le noeud reelement selectionné mais plutôt à faire du noeud selectionné par le clic droit le noeud réellement selectionné

    car il y a un problème avec le clic droit et le treeview : le noeud pointé par la souris ( lors d'un clic droit ) n'est pas consideré par VB.NET comme le noeud "actuel", il faut donc un moyen pour que le noeud pointé par la souris lors d'un clic droit soit le "treeview1.selectednote"

    c'est pour cela que j'ai cherché à définir manuellement le noeud comme noeud selectionné au niveau du code

    le gros défaut du clic droit avec un treeview c'est que l'evenement clic droit ne redefinit pas le "selectednode" ( graphiquement le noeud via un clic droit est mis en surbrillance mais il perd sa surbrillance après la fin du menu contextuel, il est repris par le vrai selectednode )

  6. #6
    Membre expérimenté
    Avatar de Rami
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 177
    Par défaut
    qqchose comme ca?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub TreeView1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TreeView1.MouseDown
    	Dim Node as TreeNode
    	Node = TreeView1.GetNodeAt(New System.Drawing.Point(e.X, e.Y)
    	If e.Button = MouseButtons.Right Then
    		TreeView1.SelectedNode = Node
    	End If
    End Sub

  7. #7
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 165
    Par défaut
    génial !

    merci c'est exactement ce que je cherchais, le clic droit permet maintenant de rendre le noeud cliqué comme noeud selectionné

    Merci encore

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 42
    Par défaut Merci aussi
    Ca marche aussi pour Delphi .net

    if e.Button=Systems.Windows.Forms.MouseButtons.Right then
    MyTreeView.SelectedNode := MyTreeView.GetNodeAt(e.X,e.Y);

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

Discussions similaires

  1. Etendre une partie d'un treeview par le code
    Par megamario dans le forum VB.NET
    Réponses: 3
    Dernier message: 30/03/2015, 14h44
  2. Réponses: 2
    Dernier message: 05/07/2013, 13h04
  3. Réponses: 5
    Dernier message: 13/04/2010, 13h57
  4. Selectionner un node d'un treeview par le code
    Par beldi83 dans le forum VB.NET
    Réponses: 4
    Dernier message: 22/03/2010, 16h19
  5. Selectionner une node d'un treeview par le code
    Par beldi83 dans le forum VB.NET
    Réponses: 2
    Dernier message: 16/03/2010, 09h38

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