vb.net - 如何在 VB.net MS 图表中将复选框添加到图例中启用\禁用系列
问题描述
如何通过选中 VB.net MS 图表中的复选框来向图例项添加复选框以启用\禁用系列
解决方案
如果您谈论的是内置的 WinForms 图表控件,那么它没有此功能,但您可以为图例使用“支持”控件。我建议隐藏默认图例并在表单中添加一个 CheckedListBox ,并将系列名称作为项目(默认情况下全部选中)并跟踪未选中/重新选中的索引。项目索引的顺序必须与系列顺序相对应。为了隐藏图例,您可以将 Enabled 属性设置为 false。在设计器属性中,转到 Legends->...-> 选择默认(通常是唯一的)元素并设置 Enabled = False。在这种情况下,“启用”意味着“可见”。或者你可以做
Chart1.Legends.Item(0).Enabled = False
在运行时。
要隐藏未选中的系列,您可以使用:
Chart1.Series.Item(i).Enabled = False
并再次展示它
Chart1.Series.Item(i).Enabled = True
其中 i 是系列索引和 CheckedListBox 项目索引。此时,您可能想要实现默认图例具有的颜色功能,这可能有点棘手。可能需要使用扩展的 CheckedListBox,因为内置的 CheckedListBox 没有每个元素的前景色/背景色。请参阅有关绘制您自己的 CheckedListBox 的信息。动态更改 CheckedListBox 项 ForeColor
或者,您可以为每个系列使用一个复选框,因为 CheckBox 具有 ForeColor 和 BackColor 属性,或者一个带有代表系列颜色的图像的复选框。在这两种情况下,如果有大量的系列或系列可以在运行时更改,您可能希望使用 Panel 或 FlowLayoutPanel 作为您在运行时生成的复选框。在设计时添加所有复选框并不方便。例如,您可以在表单加载事件中为图表中的所有系列创建一个循环,您可以在其中生成图例复选框和系列颜色的图像,方法是使用
Dim b As Bitmap = New Bitmap(16, 16)
Using g As Graphics = Graphics.FromImage(b)
g.Clear(Chart1.Series.Item(i).Color)
End Using
推荐阅读
- python - 在 python 中使用 matplotlib 绘制多个分组条形图
- google-cloud-platform - terraform plan 错误:此处不应出现参数
- flutter - 使用 bloc 状态管理问题更改颤振本地化
- r - 如何根据范围内的条件进行过滤?
- node.js - findAll 与模型返回奇数值续集
- javascript - Javascript 和正则表达式调整 - 条带化字符串
- python - 如何将 json 文件导入 Blender?
- python - 用数组填充的 Pandas 列,连接数组内的值
- macos - 如何在 Mac OSX 上对 PyInstaller + PyQt 应用程序进行代码设计,避免在应用程序公证后出现“二进制未签名”错误?
- revit-api - 如果我在 BIM 360 更新我的 Revit 模型,我会丢失以前注册的问题吗?