#vb.net #charts
#vb.net #Диаграммы
Вопрос:
Код выдает System.ArgumentOutOfRangeException
ошибку, потому что ряд кажется несуществующим. Когда я пытаюсь отладить один шаг, добавьте серию снова, выдает ошибку, потому что серия уже существует…
For Each row As DataRow In dt.Rows
Chart1.Series.Add(row("Counter"))
Chart1.Series(i).ChartType = Charting.SeriesChartType.StackedColumn
Chart1.Series(i).Label = 1
Dim dp As Charting.DataPoint = New Charting.DataPoint()
Dim sDay As String = row("Tag")
If i = 0 Then
sDayRowBefore = sDay
Else
If sDayRowBefore <> sDay Then
iSeriesIndex = iSeriesIndex 1
End If
End If
dp.XValue = iSeriesIndex
Chart1.Series(i).IsXValueIndexed = True
dp.AxisLabel = row("Tag")
dp.SetValueY(1)
dp.Color = row("ItemFarbe")
Chart1.Series(row("Counter")).Points.Add(dp)
sDayRowBefore = sDay
Chart1.DataManipulator.Filter(Charting.CompareMethod.EqualTo, 0, Chart1.Series(i))
i = i 1
Next
Ошибка возникает только тогда, когда я снова использую ту же диаграмму для другого набора данных.
Перед созданием диаграммы я очищаю ряды, точки и область диаграммы.
For Each var As Charting.Series In Chart1.Series
var.Points.Clear()
Next
Комментарии:
1. Итак, с первого раза все
dt
работает нормально. Затем вы запускаетеFor Each var
цикл дляClear
Points
каждого существующегоSeries
в данный момент. Во второй раз вы установилиdt
какое-то другоеDataTable
значение иChart1.Series(i).ChartType
выдаете свое исключение? Это правильно? Каковы значения i иCount
свойстваSeriesCollection
? Если вы воссоздаетеSeriesCollection
каждый раз, почему вы не вызываетеSeries.Clear()
вместо очистки точек?2. @topshot Извините, я не был здесь более конкретным.
Chart1.Series(row("Counter")).Points.Add(dp)
вызывает выполнение. Значение i равно 0 -> рабочее, поскольку ряд был добавлен правильно, я не могу добавить ее снова. Количество наборов серий равно 13. И да, я также очищаю серию, просто не публикую код.
Chart1.Series.Clear() Chart1.Legends.Clear() Chart1.ChartAreas.Clear()
4. Надеюсь, я нашел ошибку, но мне нужен кто-то, кто подтвердит это. Я попытался сослаться на серию по имени с помощью Chart1.Series(строка («Счетчик»)), которая возвращает значение int из dt. Вместо названия серии, на которое ссылается этот индекс, в моем случае строка «Счетчик» возвращала 6, а индекса 6 там не было. Что подводит меня к вопросу: как ссылаться на серию по названию?
5. Диаграмма 1.Series(«6»)