使用复选框删除线下线图
本文关键字:删除 复选框 | 更新日期: 2023-09-27 18:37:13
我有一个图表,上面画着来自不同列表的线条。我添加了几个复选框并使用 if 语句来检查复选框是否被单击。这样:
public Form1()
{
InitializeComponent();
CreateGraph();
this.Text = "HRM File Analyser";
if (hrCheck.Checked)
{
drawHR();
chart1.Update();
}
else if (!hrCheck.Checked)
{
chart1.Series["Heart Rate"].Points.Clear();
chart1.Update();
}
}
但是,即使在调用更新方法之后,也没有任何变化。
有人有什么想法吗?
您向我们展示的代码的第一个问题是似乎是交互式的,但所有内容(我们看到)实际上只在启动时发生一次。
-
相反,您应该编写
Checkbox
的CheckChanged
事件!(您可以通过双击设计器中的复选框来访问它。 -
接下来,我建议不要清除,即删除所有数据。相反,只需禁用该系列。现在您可以关闭或打开该系列。
-
复选框检查逻辑也被夸大了;一次检查就足够了!
因此,新的和改进的版本将如下所示:
public Form1()
{
InitializeComponent();
CreateGraph();
this.Text = "HRM File Analyser";
hrCheck_CheckedChanged(null, null); // set initial state
..
}
private void hrCheck_CheckedChanged(object sender, EventArgs e)
{
chart1.Series["Heart Rate"].Enabled = hrCheck.Checked;
}
如果您不是通过双击创建的,请不要忘记挂接hrCheck_CheckedChanged
事件!