C# 名称为';0';已存在于';系列收集';

C# 名称为';0';已存在于';系列收集';,c#,.net,charts,mschart,C#,.net,Charts,Mschart,我有图表控件,可以接收实时数据 // MBit/Sec Series seriesBps = new Series("bps"); seriesBps.Color = Color.Gray; seriesBps.ChartType = SeriesChartType.Spline; seriesBps.BorderWidth = 2; seriesBps.Name = "MBit/Sec"; chart1.Series.Add(seriesBps); //// Packets/Sec Seri

我有
图表控件
,可以接收实时数据

// MBit/Sec
Series seriesBps = new Series("bps");
seriesBps.Color = Color.Gray;
seriesBps.ChartType = SeriesChartType.Spline;
seriesBps.BorderWidth = 2;
seriesBps.Name = "MBit/Sec";
chart1.Series.Add(seriesBps);

//// Packets/Sec
Series seriesPps = new Series("pps");
seriesPps.Color = Color.SteelBlue;
seriesPps.ChartType = SeriesChartType.Spline;
seriesPps.BorderWidth = 2;
seriesPps.Name = "Packets/Sec";
chart1.Series.Add(seriesPps);
这是需要添加此数据的我的计时器滴答事件:

private void chartTimer_Tick(object sender, EventArgs e)
{
      if (seriesBps.Points.Count() > 300)
          seriesBps.Points.RemoveAt(0);
      seriesBps.Points.Add(wf.BitsPerSecond * 0.000001);

      DataPoint _point1 = default(DataPoint);
      foreach (DataPoint item in chart1.Series[1].Points)
      {
          item.Label = "";
          item.MarkerStyle = MarkerStyle.None;
      }

      chart1.Series[1].LegendText = chart1.Series[1].Name = (wf.BitsPerSecond * 0.000001).ToString("#,##0");
      DataPoint Point1 = chart1.Series[1].Points[chart1.Series[1].Points.Count - 1];
      Point1.Label = chart1.Series[1].Name;

            chart1.Series[1].SmartLabelStyle.AllowOutsidePlotArea = LabelOutsidePlotAreaStyle.Yes;
            chart1.Series[1].SmartLabelStyle.IsMarkerOverlappingAllowed = false;
            chart1.Series[1].SmartLabelStyle.MovingDirection = LabelAlignmentStyles.BottomRight;

                // --------------------------------------------------------------------------------------------------- //

      if (seriesPps.Points.Count() > 300)
          seriesPps.Points.RemoveAt(0);
      seriesPps.Points.Add(wf.PacketsPerSecond);

      DataPoint _point = default(DataPoint);
      foreach (DataPoint item in chart1.Series[2].Points)
      {
           item.Label = "";
           item.MarkerStyle = MarkerStyle.None;
       }

      chart1.Series[2].LegendText = chart1.Series[2].Name = wf.PacketsPerSecond.ToString("#,##0");
      DataPoint Point = chart1.Series[2].Points[chart1.Series[2].Points.Count - 1];
       Point.Label = chart1.Series[2].Name;

      chart1.Series[2].SmartLabelStyle.AllowOutsidePlotArea = LabelOutsidePlotAreaStyle.Yes;
      chart1.Series[2].SmartLabelStyle.IsMarkerOverlappingAllowed = false;
      chart1.Series[2].SmartLabelStyle.MovingDirection = LabelAlignmentStyles.BottomRight;

      chart1.ResetAutoValues();
}

图表
与第一个
系列
配合良好,但在添加第二个系列后收到此错误,我尝试将系列名称更改为唯一的名称,但我不会帮助

索引从零开始,而不是从1开始,就像任何其他
for i
循环一样。将每个系列向后移动一个

private void chartTimer_Tick(object sender, EventArgs e)
{
      if (seriesBps.Points.Count() > 300)
          seriesBps.Points.RemoveAt(0);
      seriesBps.Points.Add(wf.BitsPerSecond * 0.000001);

      DataPoint _point1 = default(DataPoint);
      foreach (DataPoint item in chart1.Series[0].Points)
      {
          item.Label = "";
          item.MarkerStyle = MarkerStyle.None;
      }

      chart1.Series[0].LegendText =  (wf.BitsPerSecond *     0.000001).ToString("#,##0");
      DataPoint Point1 = chart1.Series[0].Points[chart1.Series[0].Points.Count - 1];
      Point1.Label = chart1.Series[0].Name;

            chart1.Series[0].SmartLabelStyle.AllowOutsidePlotArea = LabelOutsidePlotAreaStyle.Yes;
            chart1.Series[0].SmartLabelStyle.IsMarkerOverlappingAllowed = false;
            chart1.Series[0].SmartLabelStyle.MovingDirection = LabelAlignmentStyles.BottomRight;

            // --------------------------------------------------------------------------------------------------- //

      if (seriesPps.Points.Count() > 300)
          seriesPps.Points.RemoveAt(0);
      seriesPps.Points.Add(wf.PacketsPerSecond);

      DataPoint _point = default(DataPoint);
      foreach (DataPoint item in chart1.Series[2].Points)
      {
           item.Label = "";
           item.MarkerStyle = MarkerStyle.None;
       }

      chart1.Series[1].LegendText = wf.PacketsPerSecond.ToString("#,##0");
      DataPoint Point = chart1.Series[1].Points[chart1.Series[1].Points.Count - 1];
      Point.Label = chart1.Series[1].Name;

      chart1.Series[1].SmartLabelStyle.AllowOutsidePlotArea = LabelOutsidePlotAreaStyle.Yes;
      chart1.Series[1].SmartLabelStyle.IsMarkerOverlappingAllowed = false;
      chart1.Series[1].SmartLabelStyle.MovingDirection = LabelAlignmentStyles.BottomRight;

      chart1.ResetAutoValues();
}

我也有同样的问题,对我来说,答案是首先像这样清除该系列:

_chart.Series.Clear()

如果您根据代码动态构建图表,这一点很重要,因为您似乎有三个系列(系列[2])。在调试模式下检查序列集合。series.Count=3,这意味着什么?这意味着您有三个序列。检查每个系列的名称,然后您就会知道是哪个系列导致了问题。它到底在哪里失败?当您执行
chart1.Series.Add(seriesps)时