【发布时间】:2014-09-10 09:43:08
【问题描述】:
我正在尝试在 winform 应用程序中显示来自数据库的动态条形图,但它没有出现并在var p2 = series.Points[arrlocationSTD]; 时给我Argument out of Exception 错误arrlocationSTD=1。这是我在 c# 中的代码..
void LoadBarChart(string qurystring)
{
if (calltype.Equals("TRANSFERED"))
{
totalTransfered = dr["SummaryOfCalls"].ToString();
intTRANSFERED = int.Parse(totalTransfered, CultureInfo.InvariantCulture);
if (i == 0)
{
arrlocationTransferred = i;
series.Points.Add(intTRANSFERED);
var p7 = series.Points[arrlocationTransferred];
p7.Color = Color.Yellow;
p7.AxisLabel = "TRANSFERED";
p7.LegendText = "TRANSFERED";
p7.Label = totalTransfered;
i++;
}
else
{
arrlocationTransferred = i;
series.Points.Add(intTRANSFERED);
var p7 = series.Points[arrlocationTransferred];
p7.Color = Color.Yellow;
p7.AxisLabel = "TRANSFERED";
p7.LegendText = "TRANSFERED";
p7.Label = totalTransfered;
}
}
}
barChart.Invalidate();
pnlBar.Controls.Add(barChart);
}
请帮我解决这个问题。 提前谢谢..
【问题讨论】:
-
听起来
series.Points集合包含一个或零个元素。在该行设置断点并使用手表查看该集合的内容。 -
您只在系列中添加了一个点。它的索引是 0,而不是 1。
-
@HansPassant 如果我有多个点,我是否总是需要以 0、1、2 等顺序添加或随机添加。
-
如果 Points 是一个列表或数组,它将使用从零开始的索引进行排序。您可以将其更改为 Dictionary 集合,然后它将使用您提供的“索引”作为键。例如。
private Dictionary<int,int> Points;然后series.Points.Add(arrlocationsSTD,intSTD); -
@MikeofSST 我已经用 Barchart 的完整代码更新了我的帖子。请看一下,因为我完全没有办法解决这个问题..