Chandelier multiple Y valeurs

Je suis en mission pour créer un graphique en chandelier en utilisant MSChart sous une forme Windows. J’ai déjà réussi à faire un graphique à barres 3D sans aucun problème. Mais après une longue recherche sur Internet, le code source de Microsoft (WinSamples) et beaucoup de casse-tête, je ne parviens pas à trouver le bon moyen de créer un graphique en chandelier.

Ce qui pourrait m’aider, c’est un exemple clair d’ajout d’une série au graphique avec plusieurs valeurs Y ou d’une correction de mon code (lors de l’exécution, aucun débogage ne s’affiche, sauf pour l’étiquette de la légende).

Un bonus serait que l’exemple est basé sur OleDB (mes valeurs sont dans une firebase database Access).

Donc, ma question est la suivante: si vous avez déjà créé un diagramme en chandeliers en C # sous Windows, pouvez-vous me donner un indice ou (encore mieux) pouvez-vous me fournir du code c #?

Voici mon code actuel (ne fonctionne pas):

using System.Windows.Forms.DataVisualization.Charting; public partial class CandleStick : Form { public CandleStick() { InitializeComponent(); } private void CandleStick_Load(object sender, EventArgs e) { GrafiekLaden(); } public void GrafiekLaden() { Koers k = new Koers(); // This method fills up a list, the data comes from my database // it contains Date, High, Low, Open, Close k.meerdereOphalen(); Series price = new Series(); chart1.Series.Add(price); // Set series chart type chart1.Series["price"].ChartType = SeriesChartType.Candlestick; // Set the style of the open-close marks chart1.Series["price"]["OpenCloseStyle"] = "Triangle"; // Show both open and close marks chart1.Series["price"]["ShowOpenClose"] = "Both"; // Set point width chart1.Series["price"]["PointWidth"] = "1.0"; // Set colors bars chart1.Series[0]["PriceUpColor"] = "Green"; chart1.Series[0]["PriceDownColor"] = "Red"; for (int i = 0; i < k.Lijst.Count; i++) { // adding date and high chart1.Series["price"].Points.AddXY(DateTime.Parse(k.Lijst[i].Datum), k.Lijst[i].Hoog); // adding low chart1.Series["price"].Points[i].YValues[1] = k.Lijst[i].Laag; //adding open chart1.Series["price"].Points[i].YValues[2] = k.Lijst[i].PrijsOpen; // adding close chart1.Series["price"].Points[i].YValues[3] = k.Lijst[i].PrijsGesloten; } } 

Votre code ajoute une Series non nommée “prix”, puis référence à la fois à la Series["price"] et à la Series[0] qui ne seront pas identiques si d’autres séries existent déjà. J’ai couru une version légèrement modifiée (simuler des données de firebase database avec une List<> ) sans aucun problème. Vous devez vérifier que les données provenant de votre firebase database sont correctes.

entrez la description de l'image ici

 public partial class Form3 : Form { public Form3() { InitializeComponent(); } private void CandleStick_Load(object sender, EventArgs e) { GrafiekLaden(); } public void GrafiekLaden() { // fake the DB data with a simple list List k = new List { new dbdata("1/1/2012", 10f, 8f, 9f, 9.5f), new dbdata("2/1/2012", 15F, 10F, 12F, 13F), new dbdata("3/1/2012", 5F, 10F, 8F, 6F), new dbdata("4/1/2012", 25F, 10F, 18F, 16F) }; Series price = new Series("price"); // <<== make sure to name the series "price" chart1.Series.Add(price); // Set series chart type chart1.Series["price"].ChartType = SeriesChartType.Candlestick; // Set the style of the open-close marks chart1.Series["price"]["OpenCloseStyle"] = "Triangle"; // Show both open and close marks chart1.Series["price"]["ShowOpenClose"] = "Both"; // Set point width chart1.Series["price"]["PointWidth"] = "1.0"; // Set colors bars chart1.Series["price"]["PriceUpColor"] = "Green"; // <<== use text indexer for series chart1.Series["price"]["PriceDownColor"] = "Red"; // <<== use text indexer for series for (int i = 0; i < k.Count; i++) { // adding date and high chart1.Series["price"].Points.AddXY(DateTime.Parse(k[i].Datum), k[i].Hoog); // adding low chart1.Series["price"].Points[i].YValues[1] = k[i].Laag; //adding open chart1.Series["price"].Points[i].YValues[2] = k[i].PrijsOpen; // adding close chart1.Series["price"].Points[i].YValues[3] = k[i].PrijsGesloten; } } } class dbdata { public string Datum; public float Hoog; public float Laag; public float PrijsOpen; public float PrijsGesloten; public dbdata(string d, float h, float l, float o, float c) { Datum = d; Hoog = h; Laag = l; PrijsOpen = o; PrijsGesloten = c; } }