【问题标题】:Bar Chart in Framework 4 - Update issue框架 4 中的条形图 - 更新问题
【发布时间】:2010-08-05 16:09:31
【问题描述】:

所以我试图在柱形图中以编程方式更新 dataPoints,但每当我这样做时,柱形图都会显示空列,其中存在大于零的数字,否则显示零。现在下面的代码适用于饼图,但由于某种原因它不适用于条形图。

    barChart.Series(0).Points.Item(0).YValues.SetValue(countInstSubs, 0)
    barChart.Series(0).Points.Item(1).YValues.SetValue(countPCLRetSubs, 0)
    barChart.Series(0).Points.Item(2).YValues.SetValue(countSYNRetSubs, 0)
    barChart.Series(0).Points.Item(3).YValues.SetValue(countPRESListSubs, 0)
    barChart.Series(0).Points.Item(4).YValues.SetValue(countUSInstSubs, 0)
    barChart.Refresh()

当我使用设计器填充一些静态值时,图表会显示这些值。但是一旦我尝试更新它们,我会得到一个空白图表。我也尝试过完全清除系列并在每次我想更改图表时重新构建它,但这也不起作用。

有人见过吗?

【问题讨论】:

  • 看起来如果我完全处理掉以前的图表并重建它的一切工作;这意味着重新分配图表、图表区域、系列、设置所有属性、重新添加所有数据点并将结果图表重新添加到表单中。与您从饼图轻松更新相比,这似乎需要做很多工作。

标签: .net winforms charts


【解决方案1】:

原来问题出在轴缩放上。一旦值发生变化,轴不会自动重新计算(我认为是错误),因此您必须手动进行。

    barChart.Series(0).Points.Item(0).SetValueY(countInstSubs)
    barChart.Series(0).Points.Item(1).SetValueY(countPCLRetSubs)
    barChart.Series(0).Points.Item(2).SetValueY(countSYNRetSubs)
    barChart.Series(0).Points.Item(3).SetValueY(countPRESListSubs)
    barChart.Series(0).Points.Item(4).SetValueY(countUSInstSubs)
    barChart.ChartAreas(0).RecalculateAxesScale()
    barChart.Refresh()

这解决了问题。

【讨论】:

    【解决方案2】:

    很好地找出解决方案。您应该将其标记为答案。

    您还可以使用以下语法动态添加点:

    barChart.Series(0).Points.AddY(countInstSubs);
    barChart.Series(0).Points.AddY(countPCLRetSubs);
    barChart.Series(0).Points.AddY(countSYNRetSubs);
    barChart.Series(0).Points.AddY(countPRESListSubs);
    barChart.Series(0).Points.AddY(countUSInstSubs);

    【讨论】:

    • 直到第二天,您才能将自己的帖子标记为“答案”(否则我会 ;-))如果您愿意,可以对我的答案进行投票,我将在明天将其标记为正确:-D 我认为 AddY 会在内部分配另一个数据点并将其附加到现有数据点。这不是我想要的。我希望数据点的数量保持不变,只更新它们的值。
    猜你喜欢
    • 2019-08-24
    • 1970-01-01
    • 2015-10-30
    • 2011-04-30
    • 2011-10-21
    • 2012-12-07
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多