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 :

[C#] [TreeView] [contextMenu] selection sur un click droit


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 113
    Points : 49
    Points
    49
    Par défaut [C#] [TreeView] [contextMenu] selection sur un click droit
    Bonjour
    voilà le titre est clair

    J'ai un Treeview, quand je clique droit sur un de ses nodes, j'appelle un context menu dynamique ... Mon problème c'est que c'est le node qui était selectionné avant qui est pris en compte et pas celui sur lequel je clique ...

    Merci bcp de votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 113
    Points : 49
    Points
    49
    Par défaut
    vous voulez un bout de code ?

    c'est long qd mm ... (le code)

  3. #3
    Membre averti Avatar de Dinytro
    Profil pro
    Inscrit en
    Août 2003
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 390
    Points : 395
    Points
    395
    Par défaut
    Une petite idée peut être ...

    Dans l'évenement AfterSelected de ton treeview, tu sauvegarde le noeud selectionné dans une variable globale et tu utilise celle là dans ton context menu...
    Un problème sans solution est un problème mal posé. (Albert Einstein)

    Placez votre main sur un poêle une minute et ça vous semble durer une heure. Asseyez vous auprès d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativité (Albert Einstein)

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 105
    Points : 134
    Points
    134
    Par défaut
    Je connais mal le controle TreeView. Tu dois trouver un moyen de sélectionner l'élément également lorsque l'utilisateur clicke avec le boutton droit. Sur un listBox il est facile de savoir à quel endroit se trouve le curseur à l'aide de la méthode IndexFromPoint mais elle ne semble pas exister pour le TreeView et il faudra donc trouver un autre moyen. Quelqu'un de mieux renseigné sur ce contrôle pourra certainement t'éclairer plus que moi

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 105
    Points : 134
    Points
    134
    Par défaut
    Citation Envoyé par Dinytro
    Une petite idée peut être ...

    Dans l'évenement AfterSelected de ton treeview, tu sauvegarde le noeud selectionné dans une variable globale et tu utilise celle là dans ton context menu...
    Le click droit n'a pas l'air de sélectionner le noeud, et ne déclanche donc pas l'événement AfterSelected, d'où mon message ci-dessus.

  6. #6
    Membre averti Avatar de Dinytro
    Profil pro
    Inscrit en
    Août 2003
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 390
    Points : 395
    Points
    395
    Par défaut
    Essaye ceci pour selectionner un noeud avec le click droit :
    (Evenement MouseDown)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
     
          TreeNode tn = treeView1.GetNodeAt(e.X, e.Y);
     
          treeView1.SelectedNode = tn;
     
    }
    Un problème sans solution est un problème mal posé. (Albert Einstein)

    Placez votre main sur un poêle une minute et ça vous semble durer une heure. Asseyez vous auprès d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativité (Albert Einstein)

  7. #7
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par Dinytro
    Essaye ceci pour selectionner un noeud avec le click droit :
    (Evenement MouseDown)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
     
          TreeNode tn = treeView1.GetNodeAt(e.X, e.Y);
     
          treeView1.SelectedNode = tn;
     
    }
    +1 je confirme je fais la même chose à une ligne près
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
     { 
      this.treeView1.SelectedNode = this.treeView1.GetNodeAt(e.X, e.Y); 
     }
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 105
    Points : 134
    Points
    134
    Par défaut
    Quel pinailleur le neguib

  9. #9
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par smikar
    Quel pinailleur le neguib
    au contraire vu le super niveau de Dinytro, je suis content quand je trouve de mon côté quelquechose d'aussi bon que lui
    mais bon c'est à weejungle de nous confirmer si c ok et
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  10. #10
    Membre averti Avatar de Dinytro
    Profil pro
    Inscrit en
    Août 2003
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 390
    Points : 395
    Points
    395
    Par défaut
    au contraire vu le super niveau de Dinytro, je suis content quand je trouve de mon côté quelquechose d'aussi bon que lui
    ???? ah bon ? j'ai un super niveau moi ?
    Et bien je te remercie ça me fait bien plaisir mais je pense qu'il y a bien meilleur que moi sur ce forum et de très loin même !!


    Et puis tu triches, il suffisait de recopier mon code et de le refactorer !! tu as juste enlevé la déclaration
    Un problème sans solution est un problème mal posé. (Albert Einstein)

    Placez votre main sur un poêle une minute et ça vous semble durer une heure. Asseyez vous auprès d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativité (Albert Einstein)

  11. #11
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par Dinytro
    Et puis tu triches, il suffisait de recopier mon code et de le refactorer !! tu as juste enlevé la déclaration
    sympa le Dinytro, on met en doute la bonne foi de papy Neguib, c'est pas bien çà, et le respect des vieux et leurs principes hein
    Chenapan
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  12. #12
    Membre averti Avatar de Dinytro
    Profil pro
    Inscrit en
    Août 2003
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 390
    Points : 395
    Points
    395
    Par défaut
    Des vieux ??? je me demande bien quelle âge tu peux avoir pour exprimer un tel désarroi !
    Un problème sans solution est un problème mal posé. (Albert Einstein)

    Placez votre main sur un poêle une minute et ça vous semble durer une heure. Asseyez vous auprès d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativité (Albert Einstein)

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 105
    Points : 134
    Points
    134
    Par défaut
    J'ai une autre alternative au cas où :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
     
          TreeNode tn = treeView1.GetNodeAt(e.X, e.Y);
          TreeNode tn2 = (TreeNode)(object)(TreeNode)(object)tn;
          string s = tn2.ToString();
     
          treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y);
     
    }
    Désolé, je n'abuserai plus

  14. #14
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.treeView1.SelectedNode = this.treeView1.GetNodeAt(e.X, e.Y);
    pour moi, c'est une ligne de code en trop à écrire
    dans le mode designer (parce qu'on est super faineant), tu met la propriété FullRowSelect à true et pis c'est tout

    cela permet de selectionner automatiquement le noeud sur la meme 'ligne imaginaire" que l'endroit où l'on a cliqué. ca fait la meme chose que le code ci-dessus, ca ecrit aussi une ligne de code car ce n'est pas une propriété par defaut MAIS on écrit moins et on se fatigue moins les doigts...


    signé: phara de la roi dla faignasse
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  15. #15
    Membre averti Avatar de Dinytro
    Profil pro
    Inscrit en
    Août 2003
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 390
    Points : 395
    Points
    395
    Par défaut
    Connaissais pas ...
    Cela dit c'est beaucoup plus intéressant de se creser les neuronnes pour trouver une solution ...
    Un problème sans solution est un problème mal posé. (Albert Einstein)

    Placez votre main sur un poêle une minute et ça vous semble durer une heure. Asseyez vous auprès d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativité (Albert Einstein)

  16. #16
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Citation Envoyé par Dinytro
    Connaissais pas ...
    Cela dit c'est beaucoup plus intéressant de se creser les neuronnes pour trouver une solution ...
    disons qu'ils se sont déjà creuser les neuronnes pour nous chez microsoft
    et puis en partant comme ca, tu peux aussi ne pas utiliser un datagrid mais un graphics en redessidant ligne par ligne avec DrawLine (c'est ce que je dois faire pour imprimer un datagridview :'()
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  17. #17
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par pharaonix
    [
    tu met la propriété FullRowSelect à true et pis c'est tout
    cela permet de selectionner automatiquement le noeud sur la meme 'ligne imaginaire" que l'endroit où l'on a cliqué. ca fait la meme chose que le code ci-dessus, ca ecrit aussi une ligne de code car ce n'est pas une propriété par defaut MAIS on écrit moins et on se fatigue moins les doigts...
    signé: phara de la roi dla faignasse
    Heu tu as lu tout le post Camarade Pharaonix, car je peux t'assurer que ta solution ne va en aucun cas permettre ce que le demandeur souhaitait sur un click droit
    code du test au cas ou tu douterais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    this.treeView1.FullRowSelect = true;
    ...
    private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
      { 
         //TreeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y); 
         if (e.Button == MouseButtons.Right )
          {
             this.label1.Text=((TreeView)sender).SelectedNode.Text;
          }
      }
    Et la valeur affichée et toujours le node précédent et non le nouveau sur click droit
    Donc -1
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  18. #18
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    j'ai bien lu le post et j'étais sûr de ma réponse donc camarade neguib, j'ai effectivement tort ^^

    j'ai testé trop vite.
    Pour moi, le treeview devrait avoir le meme comportement que la listview, datagrid, où le fullrowselect marche. Ici, si tu regarde, ca selectionne bien, (le mode selection apparait sur le noeud), et il revient sur l'ancien noeud
    ca fait la meme chose dans le FX2.0. Pourquoi selectionne-t-il le noeud au bouton droit, et le deselectionne-t-il au relaché de celui-ci?

    bref j'ai tort, je suis nul, et je tire lecon de mon echec, je me retire de la vie politique :p (copyright jospin)

    puis de toute facon, c'est surement pas la derniere fois que je dis une conne* sur le forum. personne n'est parfait... meme moi ^^
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  19. #19
    Membre averti Avatar de Dinytro
    Profil pro
    Inscrit en
    Août 2003
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 390
    Points : 395
    Points
    395
    Par défaut
    disons qu'ils se sont déjà creuser les neuronnes pour nous chez microsoft
    Tu travailles chez microsoft ou c'est un fantasme ?

    et puis en partant comme ca, tu peux aussi ne pas utiliser un datagrid mais un graphics en redessidant ligne par ligne avec DrawLine
    Tu exagères un peu quand même....
    Un problème sans solution est un problème mal posé. (Albert Einstein)

    Placez votre main sur un poêle une minute et ça vous semble durer une heure. Asseyez vous auprès d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativité (Albert Einstein)

  20. #20
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par pharaonix
    je suis nul, et je tire lecon de mon echec, je me retire de la vie politique :p
    Non reviens non
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. selection de texte + click droit dans IE
    Par valeri_dzia dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/07/2012, 19h49
  2. Menu sur un click droit
    Par Zoook dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 11/12/2008, 01h58
  3. menu d'un objet (sur le click droit)
    Par cortex59 dans le forum Visio
    Réponses: 1
    Dernier message: 15/05/2008, 16h23
  4. [VB.net][treeview] Sélectionner un Node via click droit
    Par arnolem dans le forum Windows Forms
    Réponses: 3
    Dernier message: 22/03/2006, 11h45
  5. Afficher un menu contextuelle sur le click droit d'une image
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/01/2006, 12h19

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