Benutzer mit den meisten Antworten
Diagramme werden mir nicht angezeigt

Frage
-
Hi zusammen,
in meinem unten erstellten Code möchte ich dynamisch einen chart erstellen. Das klappt beim ersten laden auch wunderbar. Nur wenn ich ein auslöseereignis aufrufe, welcher mir mit dieser Methode den Chart aktualisieren soll, so wird er mir nicht mehr angezeigt. Im Debugger habe ich gesehen, dass die Daten, die ich brauche eigentlich in den Variablen gespeichert sind.
Meine Vermutungen sind:
- Mir fehlt schlicht ein Anzeigebefehl
- Ich müsste die alte ChartArea zerstören und eine neue generieren (Sollte das nicht auch einfach funktionieren, wenn ich die Series neu erstelle?
Wie bekomme ich meine charts angezeigt?
private void createCharts() { cKategorieAnzahl.Titles.Clear(); cKategorieAnzahl.Titles.Add("Neukunden nach Kategorie " + nudJahrNeukunden.Value.ToString()); cKategorieAnzahl.Series.Clear();//Standardmäßig hinzugefügte Daten löschen var series = new Series("Daten");//Serie anlegen und Namen vergeben series.XValueType = ChartValueType.String; series.XValueMember = "MECONS";//Spalte aus der Tabelle abrufen, die die X-Werte darstellt series.YValueType = ChartValueType.Int32; series.YValueMembers = "Anzahl";//Spalte aus der Tabelle abrufen, die die Y-Werte darstellt series.ChartType = SeriesChartType.Pie;//Diagrammtyp cKategorieAnzahl.Series.Add(series);//Serie zum Chart hinzufügen cKategorieAnzahl.DataSource = this.dbKategorieAnzahlDataSet.PFMESCON01; cKategorieAnzahl.ChartAreas[0].Area3DStyle.Enable3D = true; }
Beim ersten ausführen wird es richtig angezeigt:
Beim zweiten Durchlauf bleibt es aber leer:
Vielen Dank für eure Hilfe im Voraus
Gruß
Matze
Antworten
Alle Antworten
-
Hi,
ich habe Dein Code nachgestellt und mit neuer DataSet-Instanz funktioniert er problemlos.using System; using System.Data; using System.Windows.Forms; using System.Windows.Forms.DataVisualization.Charting; namespace WindowsFormsApplication1CS { public partial class Form08 : Form { public Form08() { InitializeComponent(); } private Chart cKategorieAnzahl = new Chart() { Dock = DockStyle.Fill }; private DataSet1 dbKategorieAnzahlDataSet; int? nudJahrNeukunden = 2016; Button btn = new Button() { Text = "neu Laden", Dock = DockStyle.Top }; private void Form08_Load(object sender, EventArgs e) { this.Controls.AddRange(new Control[] { cKategorieAnzahl, btn }); btn.Click += Btn_Click; } private void Btn_Click(object sender, EventArgs e) { dbKategorieAnzahlDataSet = new DataSet1(); createCharts(); } private void createCharts() { cKategorieAnzahl.Titles.Clear(); cKategorieAnzahl.Titles.Add("Neukunden nach Kategorie " + nudJahrNeukunden.Value.ToString()); cKategorieAnzahl.ChartAreas.Clear(); cKategorieAnzahl.ChartAreas.Add(new ChartArea()); cKategorieAnzahl.ChartAreas[0].Area3DStyle.Enable3D = true; cKategorieAnzahl.Series.Clear();//Standardmäßig hinzugefügte Daten löschen var series = new Series("Daten");//Serie anlegen und Namen vergeben series.XValueType = ChartValueType.String; series.XValueMember = "MECONS";//Spalte aus der Tabelle abrufen, die die X-Werte darstellt series.YValueType = ChartValueType.Int32; series.YValueMembers = "Anzahl";//Spalte aus der Tabelle abrufen, die die Y-Werte darstellt series.ChartType = SeriesChartType.Pie;//Diagrammtyp cKategorieAnzahl.Series.Add(series);//Serie zum Chart hinzufügen cKategorieAnzahl.DataSource = this.dbKategorieAnzahlDataSet.PFMESCON01; } } public class DataSet1 : DataSet { Random rnd = new Random(); public DataSet1() { PFMESCON01 = new DataTable(); PFMESCON01.Columns.Add("MECONS", typeof(string)); PFMESCON01.Columns.Add("Anzahl", typeof(int)); PFMESCON01.Rows.Add("Internet", rnd.Next(2,5)); PFMESCON01.Rows.Add("Empfehlung Kunde", rnd.Next(2, 5)); PFMESCON01.Rows.Add("Sonstiges", rnd.Next(2, 5)); } public DataTable PFMESCON01 { get; set; } } }
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
Kommas richtig setzen!
Schüler sagen, Lehrer haben es gut.
Schüler, sagen Lehrer, haben es gut