Bonjour,
Je souhaite supprimer l'objet chart.series sélectionné.
Pour supprimer un objet, j'utilise:
Pourriez-vous m'aider s'il vous plaît?
Code : Sélectionner tout - Visualiser dans une fenêtre à part this.chart1.Series.RemoveAt(0);
Merci!
Bonjour,
Je souhaite supprimer l'objet chart.series sélectionné.
Pour supprimer un objet, j'utilise:
Pourriez-vous m'aider s'il vous plaît?
Code : Sélectionner tout - Visualiser dans une fenêtre à part this.chart1.Series.RemoveAt(0);
Merci!
Salut,
tu veux faire quoi exactement ? Supprimer un graphique de ton Form ? chart1 est de quel type ?
Salut,
Oui, je veux supprimer un graphe sélectionné par la souris.
chart1 est de type Chart (System.Windows.Forms.DataVisualization.Charting).
Merci!
Alors pour supprimer un contrôle il faut demander au contrôle parent (celui qui le contient) de le supprimer.
Tu peux le faire avec un code du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Control parent = chart1.Parent; parent.Controls.Remove(chart1);
Merci!
Je pense que ça supprime tout le chart mais moi je veux supprimer uniquement la série cliqué (un graphe parmi d'autres).
![]()
Arf, je connais pas ce Control. Si j'ai 5 minutes je regarde.
Re,
j'ai un peu regardé le contrôle Chart : j'ai inséré deux series dans le load de ma form et avec un bouton j'ai mis la suppression de la première. Maintenant je me demande comment l'utilisateur peut-il sélectionner une série directement sur un Chart ? J'ai pas trouvé. Une méthode possible est d'avoir une ComboBox qui référence les séries et permet d'en sélectionner une en particulier.
RE,
Merci bien pour la réponse.
J'aurai besoin de créer et supprimer des graphes d'une façon dynamique. Donc, la méthode de suppression en utilisant ou un combobox n'est pas possible pour moi.
Bonne journée!
Mais alors qu'appelles-tu "sélectionner une série" ?
Comment tu fais cette sélection actuellement dans ton app ?
Après si tes séries sont générées dynamiquement, rien ne t'empêche d'alimenter ta ComboBox à la volée.
Sélectionner une série en utilisant un menu contextuel et la souris.
Un menu contextuel que tu as codé ? T'as quoi de fait ?
J'ai codé ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 private void chart1_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { ContextMenu m = new ContextMenu(); m.MenuItems.Add(new System.Windows.Forms.MenuItem("Delete", new System.EventHandler(this.delete_OnClick))); m.Show(chart1, new System.Drawing.Point(e.X, e.Y)); } }
Quelle version de VS utilises-tu ? Il me semble qu'il faut préférer ContextMenuStrip à ContextMenu.
Quoiqu'il en soit tu peux :
- poser un ContextMenuStrip dans le mode design,
- l'associer à ton instance de Chart (via son attribut ContextMenuStrip, faisable depuis ses propriétés en mode design),
- dans l'event Opening tu listes les series de ton Chart et tu ajoutes un ToolStripItem pour chacun avec :
- - un texte explicite (ex. "delete" + serie.Name),
- - un handler sur le click qui pointe vers la fonction qui fera la suppression,
- - un Tag (attribut fourre-tout) où tu cales à nouveau le nom pour retrouver la série à supprimer.
Ce qui donne (ici mon instance de Chart s'appelle chrtTest et mon instance de ContextMenuStrip ctxMenu):
Attention, ce code va effectivement supprimer une série mais ne permettra pas de la récupérer par la suite.
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 // la fonction qu'on abonne au click des ToolStripItem void tsi_Click(object sender, EventArgs e) { // on recherche le nom de la série via le Tag du ToolStripMenu à l'origine de l'appel Series selected = chrtTest.Series.FindByName((string)((ToolStripItem)sender).Tag); // on supprime la série en question chrtTest.Series.Remove(selected); } // l'event Opening du ContextMenuStrip private void ctxMenu_Opening(object sender, System.ComponentModel.CancelEventArgs e) { // on commence par supprimer les ajouts précédents éventuels ctxMenu.Items.Clear(); // pour chaque série du chart foreach (Series serie in chrtTest.Series) { // on ajoute une entrée à notre menu contextuel ToolStripItem tsi = ctxMenu.Items.Add("delete " + serie.Name); // on met le nom de la série dans le Tag tsi.Tag = serie.Name; // on définit la fonction précédemment créée comme handler de l'event click de l'entrée tsi.Click += tsi_Click; } }
Loin d'être un expert, je désirais également effacer que les données d'un graphique "Chart1" sans perdre les caractéristiques du graphique pour y insérer de nouvelles données. En tâtonnant, j'ai trouvé cette solution simple.
Chart1 contient 2 séries de données ou graphiques soit "température max" et "température min". À l'aide d'un bouton de commande, "Button4", j'efface que les données du graphiques sans perdre les titres, légendes etc.
Voilà,
Partager