有选择地隐藏C#图表中的系列

Xan*_*ham 7 c# charts customization mschart

假设我有一个包含2个系列的图表.然后对于每个系列,我都有一个复选框,说明我是否想要查看它们.假设我最初绘制两个,然后想要隐藏它们中的任何一个.做这个的最好方式是什么?

我知道我可以Clear(),然后AddXY()他们回来,但有更快的方法吗?

我的想法是:


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

2.将点集合复制到变量,清除并重新放入.
Series[].Points是只读的

3.将系列复制到变量,清除点,然后放回.
显然它将系列存储为参考当我尝试这个,我找不到复制命令.

所以我显然是错误的做法.你如何动态地允许图表隐藏不同的系列?

Lar*_*rry 21

要隐藏MSChart中的系列,请以Enabled这种方式使用该属性:

msChart.Series["Series"].Enabled = false;
Run Code Online (Sandbox Code Playgroud)

并再次显示:

msChart.Series["Series"].Enabled = true;
Run Code Online (Sandbox Code Playgroud)

所以你不需要删除点并重新添加它们.

  • @Larry,谢谢你提供的信息。不幸的是,禁用它们也会阻止图表显示我禁用的图例。有没有办法禁用系列但仍显示其图例信息?谢谢。 (2认同)

Jac*_*ack 5

还有另一种方法可以在不隐藏图例的情况下执行此操作。

简单地说:

Chart.Series[0].Color = Color.FromArgb(0, 0, 0, 0); //sets color to transparent
Run Code Online (Sandbox Code Playgroud)

您可以稍后重置为 Color.Empty 以恢复默认颜色。

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