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)时代码>?