Hallo zusammen,
ich möchte gerne das ChartControl mit weiteren Propertys und Funtkionalitätet erweitern. Dazu habe ich schon mal folgenden Code:
Spoiler anzeigen
Über die Property MaxAnzahlSeries werden entsprechend FastLine-Series erzeugt.
Ich kann das Control auch auf meine Form ziehen und es werden im Designer entsprechend der Anzahl die Series gezeichnet.
Will ich dann aber das Programm starten bekomme ich folgende Fehlermeldung:
Spoiler anzeigen
Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Ein Diagrammelement mit dem Namen '1' ist bereits in 'SeriesCollection' vorhanden..
Ist ja klar, da ich ja über die Property im Designer schon 1 Serie zeichnen lies.
Wieso erkennt mein Control nicht, dass schon eine Serie vorhanden ist??
Hoffe mir kann jemand helfen!
Danke!
ich möchte gerne das ChartControl mit weiteren Propertys und Funtkionalitätet erweitern. Dazu habe ich schon mal folgenden Code:
VB.NET-Quellcode
- Public Class XChart
- Inherits Charting.Chart
- Private Property SeriesColor As List(Of Color)
- ''' <summary>
- ''' "Begrenzt die Anzahl und Erzeugt die Kurven-Serien für das Diagramm"
- ''' </summary>
- ''' <remarks></remarks>
- Private _MaxAnzahSeries As Integer
- <Description("Begrenzt die Anzahl und Erzeugt die Kurven-Serien für das Diagramm")> _
- Public Property MaxAnzahlSeries() As Integer
- Get
- Return _MaxAnzahSeries
- End Get
- Set(ByVal value As Integer)
- If MaxAnzahlSeries <> value Then
- _MaxAnzahSeries = value
- Call CreateSeries()
- End If
- End Set
- End Property
- Public Sub New()
- MyBase.New()
- SeriesColor = New List(Of Color)
- SeriesColor.Add(Color.Green)
- SeriesColor.Add(Color.Orange)
- SeriesColor.Add(Color.Brown)
- SeriesColor.Add(Color.Chocolate)
- SeriesColor.Add(Color.CornflowerBlue)
- SeriesColor.Add(Color.Crimson)
- SeriesColor.Add(Color.DarkMagenta)
- SeriesColor.Add(Color.DeepPink)
- SeriesColor.Add(Color.Firebrick)
- SeriesColor.Add(Color.ForestGreen)
- SeriesColor.Add(Color.Gold)
- SeriesColor.Add(Color.Maroon)
- SeriesColor.Add(Color.Magenta)
- SeriesColor.Add(Color.Moccasin)
- SeriesColor.Add(Color.OliveDrab)
- SeriesColor.Add(Color.OrangeRed)
- SeriesColor.Add(Color.PaleVioletRed)
- SeriesColor.Add(Color.Red)
- SeriesColor.Add(Color.RoyalBlue)
- SeriesColor.Add(Color.SaddleBrown)
- SeriesColor.Add(Color.SeaShell)
- SeriesColor.Add(Color.SteelBlue)
- SeriesColor.Add(Color.Tan)
- SeriesColor.Add(Color.Teal)
- SeriesColor.Add(Color.Thistle)
- SeriesColor.Add(Color.Tomato)
- SeriesColor.Add(Color.Turquoise)
- SeriesColor.Add(Color.Violet)
- SeriesColor.Add(Color.Wheat)
- SeriesColor.Add(Color.Yellow)
- SeriesColor.Add(Color.YellowGreen)
- Dock = DockStyle.Fill
- ChartAreas.Add("ChartArea1")
- ChartAreas(0).AxisX.LabelStyle.Format = "{dd/MM/yy | HH:mm:ss}"
- Legends.Add("Legend1")
- End Sub
- Private Sub CreateSeries()
- '________________________________________________________________________________
- 'Serien erzeugen und laden
- For i As Integer = 1 To _MaxAnzahSeries
- With Me
- Dim DiagrammSerie As DataVisualization.Charting.Series
- DiagrammSerie = .Series.FindByName(CStr(i))
- If IsNothing(DiagrammSerie) = True Then
- .Series.Add(i)
- .Series(CStr(i)).ChartType = DataVisualization.Charting.SeriesChartType.FastLine
- .Series(CStr(i)).ChartArea = "ChartArea1"
- .Series(CStr(i)).Legend = "Legend1"
- .Series(CStr(i)).XValueType = DataVisualization.Charting.ChartValueType.DateTime
- .Series(CStr(i)).Color = SeriesColor(i)
- End If
- End With
- Next
- End Sub
Über die Property MaxAnzahlSeries werden entsprechend FastLine-Series erzeugt.
Ich kann das Control auch auf meine Form ziehen und es werden im Designer entsprechend der Anzahl die Series gezeichnet.
Will ich dann aber das Programm starten bekomme ich folgende Fehlermeldung:
Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Ein Diagrammelement mit dem Namen '1' ist bereits in 'SeriesCollection' vorhanden..
Ist ja klar, da ich ja über die Property im Designer schon 1 Serie zeichnen lies.
Wieso erkennt mein Control nicht, dass schon eine Serie vorhanden ist??
Hoffe mir kann jemand helfen!
Danke!