在C#图表中选择性隐藏系列

11
假设我有一个包含两个系列的图表。然后对于每个系列,我都有一个复选框来确定是否要看到它们。假设我最初绘制了这两个系列,之后想要隐藏其中任何一个。最好的方法是什么?
我知道我可以只需清除再使用AddXY()把它们重新添加进去,但有没有更快的方法?
我的尝试思路:
1. 根据复选框设置可见性属性为true/false。 没有可见性属性。
2. 将点集合复制到变量中,清除并重新放回。 Series[].Points是只读的。
3. 将系列复制到变量中,清除点,并重新放回。 当我尝试这样做时,它显然将系列存储为引用,并且我找不到复制命令。
所以我显然走错了路。您如何动态地允许图表隐藏不同的系列?
3个回答

28

要在 MSChart 中隐藏一个系列,请使用以下方式的 Enabled 属性:

msChart.Series["Series"].Enabled = false;

并再次显示它:

msChart.Series["Series"].Enabled = true;

所以您不需要删除点并重新添加它们。

嗯,那很简单。我没有想到要检查“启用”,只看了可见性。虽然我可以理解为什么他们选择了这个名字。顺便问一下,你最初是怎么学到启用是允许这个功能的呢? - Xantham
1
我记得我很幸运地通过与设计师玩耍找到了这个Enabled属性 :) - Larry
2
@Larry,谢谢你提供的信息。不幸的是,禁用它们也会停止图表显示我禁用的那些图例。有没有办法禁用一个系列但仍然显示其图例信息?谢谢。 - dailyUnknown

5

不隐藏图例,还有另一种方法。

只需要这样说:

Chart.Series[0].Color = Color.FromArgb(0, 0, 0, 0); //sets color to transparent

您可以稍后将其重置为Color.Empty以恢复默认颜色。
唯一的不利之处在于,除非系列中的最后一个项目被隐藏,否则其他行将重新着色。

0
chart1.Legends.Clear();

//Hiding the series from the legend will work too:
chart1.Series["0"].IsVisibleInLegend = false;

//disabling the legend:
chart1.Legends[0].Enabled = false;

2
目前你的回答不够清晰。请编辑并添加更多细节,以帮助其他人理解它如何回答所提出的问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Jeremy Caney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接