Chart alte Daten löschen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von us4711.

    Chart alte Daten löschen

    Hallo,

    ich bastle gerade mit Charts herum. Die Charts füttere ich e nac Situation aus verschiedenen XML-Dateien.

    Jetzt ersteinmal der Code

    VB.NET-Quellcode

    1. Imports Wirrklang.Aufgaben
    2. Public Class Auswertung
    3. Private Sub Auswertung_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    4. 'Entscheide ob Tabs oder nicht
    5. If Wirrklangrettung.DS_Aufgabenverwaltung.Spalten.Rows.Count <= 2 Then
    6. GraphenbasisOhneTab()
    7. Else
    8. ' Lege Tabs an
    9. 'Lege die dazugehörigen series an
    10. End If
    11. End Sub
    12. Private Sub GraphenbasisOhneTab()
    13. Dim ZählerSpalten As Integer
    14. Dim ZählerAufgaben As Integer
    15. Dim ZählerSeries As Integer
    16. ZählerSpalten = Wirrklangrettung.DS_Aufgabenverwaltung.Spalten.Rows.Count
    17. Dim ChartArea(ZählerSpalten) As System.Windows.Forms.DataVisualization.Charting.ChartArea
    18. Dim Legend(ZählerSpalten) As System.Windows.Forms.DataVisualization.Charting.Legend
    19. Dim Series(ZählerSpalten) As System.Windows.Forms.DataVisualization.Charting.Series
    20. Dim Chart(ZählerSpalten) As System.Windows.Forms.DataVisualization.Charting.Chart
    21. ZählerAufgaben = Wirrklangrettung.DS_Aufgabenverwaltung.Aufgabe.Rows.Count
    22. ZählerSeries = ZählerAufgaben / ZählerSpalten
    23. For x = 0 To ZählerSpalten - 1
    24. ChartArea(x) = New System.Windows.Forms.DataVisualization.Charting.ChartArea()
    25. Legend(x) = New System.Windows.Forms.DataVisualization.Charting.Legend()
    26. Series(x) = New System.Windows.Forms.DataVisualization.Charting.Series()
    27. Chart(x) = New System.Windows.Forms.DataVisualization.Charting.Chart()
    28. CType(Chart(x), System.ComponentModel.ISupportInitialize).BeginInit()
    29. Me.Controls.Add(Chart(x))
    30. ChartArea(x).Name = "ChartArea(x)"
    31. Chart(x).ChartAreas.Add(ChartArea(x))
    32. Legend(x).Name = "Legend(x)"
    33. Chart(x).Legends.Add(Legend(x))
    34. Chart(x).Location = New System.Drawing.Point(10 + 300 * x, 10)
    35. Chart(x).Name = "Chart(x)"
    36. Series(x).ChartArea = "ChartArea(x)"
    37. Series(x).Legend = "Legend(x)"
    38. Series(x).Name = Wirrklangrettung.DS_Aufgabenverwaltung.Spalten.Rows(x).Item(3)
    39. Series(x).ChartType = DataVisualization.Charting.SeriesChartType.Bar
    40. Chart(x).Series.Add(Series(x))
    41. Chart(x).Size = New System.Drawing.Size(290, ZählerSeries * 30)
    42. Chart(x).TabIndex = 0
    43. Chart(x).Text = "Chart(x)"
    44. Legend(x).Enabled = False
    45. Next
    46. Me.Size = New System.Drawing.Size(10 + 310 * ZählerSpalten, ZählerSeries * 30 + 60)
    47. Me.Text = "Auswertung " & Wirrklangrettung.DS_Aufgabenverwaltung.AufgabenInfos.Rows(0).Item(6)
    48. For y = 0 To ZählerSpalten - 1
    49. For x = ZählerSeries - 1 To 0 Step -1
    50. Dim Wert1 As Single
    51. If Wirrklangrettung.DS_Aufgabenverwaltung.Aufgabe.Rows(x + y * ZählerSeries).Item(14) < 6 Then
    52. Wert1 = (Wirrklangrettung.DS_Aufgabenverwaltung.Aufgabe.Rows(x + y * ZählerSeries).Item(14) - 6) * -2
    53. ' Series(1).Points.Item(x).Color = Color.Red
    54. Else
    55. Wert1 = (Wirrklangrettung.DS_Aufgabenverwaltung.Aufgabe.Rows(x + y * ZählerSeries).Item(14) - 6)
    56. ' Series(1).Points.Item(x).Color = Color.Green
    57. End If
    58. Series(y).Points.AddXY((ZählerSeries - 1) - x, Wert1)
    59. If Wirrklangrettung.DS_Aufgabenverwaltung.Aufgabe.Rows(x).Item(14) < 6 Then
    60. Series(y).Points.Item((ZählerSeries - 1) - x).Color = Color.Red
    61. Else
    62. Series(y).Points.Item((ZählerSeries - 1) - x).Color = Color.Green
    63. End If
    64. Series(y).Points.Item((ZählerSeries - 1) - x).AxisLabel = Wirrklangrettung.DS_Aufgabenverwaltung.Aufgabe.Rows(x).Item(15)
    65. MsgBox(Wirrklangrettung.DS_Aufgabenverwaltung.Aufgabe.Rows(x).Item(15))
    66. Next
    67. End Sub
    68. End Class


    Jetzt das Problem. Rufe ich diese Form zum ersten mal auf, ist alles in Ordnung. Rufe ich diese Form zum zweiten Mal auf und verwende eine andere XML-Datei als Basis, gibt

    VB.NET-Quellcode

    1. MsgBox(Wirrklangrettung.DS_Aufgabenverwaltung.Aufgabe.Rows(x).Item(15))

    die richtigen Werte aus.

    Aber in dem Chartscontrol sind noch die Werte aus der ersten XML-Datei zu sehen. Hie und da mischen sich die Daten der zweiten XML-Datei dazu.

    Wo liegt mein Fehler?

    Kagurame schrieb:

    Refresh oder sowas

    Gibt es, chart.update() oder series.points.clear()

    In anderen Zusammenhängen funktioniert das auch, hier habe ich nichts geschafft. Weil die XML-Datei immer neu beim Aufrufen des Forms geladen wird, habe ich jetzt probiert:

    VB.NET-Quellcode

    1. form.showdialog()
    2. form.dispose()

    Jetzt verhält sich das so, wie es soll.

    ErfinderDesRades schrieb:

    bindest Das Chart da dran - gugge ChartTester

    Danke. Muss ich mir mal anschauen.