bonjour,
j'essaye de construire un menu lors d'un clic droit sur les noeud d'un treeview.
comment est ce que je peux faire ça ??
bonjour,
j'essaye de construire un menu lors d'un clic droit sur les noeud d'un treeview.
comment est ce que je peux faire ça ??
soit avec l'évènement NodeMouseClick
soit en associant un ContextMenu au TreeView et en gérant l'évènement Popup du ContextMenu pour personnaliser son contenu avant qu'il ne s'ouvre
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
j'ai ajoutée au control treeView1 un Contextmenustrip et mon évennement doit porter sur le noeud sélectionné mais lorsque je clique l'exception NullReferenceException apparaît et donc il ne prend pas en considération le noeud sélectionné. quelqu'un sait comment est ce qque je peux résoudre ce problème ??
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
ok voici le code :
de plus le contextmenustrip apparait dans n'importe qu'elle zone du treeview cotrole et moi je veux qu'il n'apparait que si je cliqu sur un noeud
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 this.treeView1.ContextMenuStrip = this.contextMenuStrip5; this.contextMenuStrip5.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.openInANewTabulationToolStripMenuItem, this.insertAnItemToolStripMenuItem, this.modifyTheItemAttributesToolStripMenuItem}); this.contextMenuStrip5.Name = "contextMenuStrip5"; this.contextMenuStrip5.Size = new System.Drawing.Size(201, 92); private void openInANewTabulationToolStripMenuItem_Click(object sender, EventArgs e) { Console.WriteLine(treeView1.SelectedNode.Name);}![]()
Si tu veux qu'il apparaisse lors d'un clic sur un noeud, utilise aussi l'événement Opening du menu contextuel.
Il faudra aussi utiliser NodeMouseClick je pense, afin de positionner le noeud en cours sur le clic droit (le menu contextuel s'ouvre sur le clic droit). Car le clic droit ne modifie pas la sélection dans le TreeView.
Quelque chose dans ce genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 private void TreeViewNodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { // Positionnement du noeud sélectionné pour le menu contextuel if (e.Button == MouseButtons.Right) { _selectedNode = e.Node; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 private void ContextMenuOpening(object sender, CancelEventArgs e) { // On annule l'ouverture du menu contextuel // si on n'est pas positionné sur un noeud e.Cancel = _selectedNode != null; }
merci ton truc ça marche nikel
mais je demande si je peux créer un menu dynamique je veux dire les menu Items ça se crée dynamiquement ??
Oui tu peux créer en dynamique. Regarde le code dans le fichier designer et tu verras comment on ajoute des items à un menu contextuel.
Dans l'événement Opening, si e.Cancel est à false (donc on annule pas l'ouverture), tu peux modifier ton menu avant affichage.
désolé mais je vois pas vraiment ce que tu veux dire
est ce que tu m'expliqué davantage, enfin je vois coment ajouter dynamiquement des nouveaux items mais comment connaitre le quel j'ai cliqué dessus ???
Partager