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

本文关键字:隐藏 选择性 | 更新日期: 2023-09-27 18:00:23

假设我有一个图表,上面有两个系列。然后,对于每个系列,我都有一个复选框来决定是否要查看它们。假设我最初策划了这两件事,后来又想隐藏其中任何一件。最好的方法是什么?

我知道我可以先Clear(),然后再AddXY(),但有更快的方法吗?

我尝试的想法:


1.根据复选框将可见性属性设置为true/false。
没有可见性属性

2.将Points Collection复制到变量,清除并放回。
Series[].Points为只读

3.将系列复制到变量,清除点,然后放回。
显然,当我尝试此操作时,它将系列存储为引用,但我找不到复制命令。

所以我显然走错了路。如何动态地允许图表隐藏不同的系列?

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

要在MSChart中隐藏序列,请按以下方式使用Enabled属性:

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

并再次显示:

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

因此,您不需要删除点并重新添加它们。

还有另一种方法可以在不隐藏图例的情况下做到这一点。

简单地说:

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

您可以重置为"颜色"。稍后清空以恢复默认颜色。

这里唯一的缺点是,除非系列中的最后一项被隐藏,否则其他行将被重新着色

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;