使用复选框删除线下线图

本文关键字:删除 复选框 | 更新日期: 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();
    }
}  

但是,即使在调用更新方法之后,也没有任何变化。

有人有什么想法吗?

使用复选框删除线下线图

您向我们展示的代码的第一个问题是似乎是交互式的,但所有内容(我们看到)实际上只在启动时发生一次。

  • 相反,您应该编写CheckboxCheckChanged事件!(您可以通过双击设计器中的复选框来访问它。

  • 接下来,我建议不要清除,即删除所有数据。相反,只需禁用该系列。现在您可以关闭或打开该系列。

  • 复选框检查逻辑也被夸大了;一次检查就足够了!

因此,新的和改进的版本将如下所示:

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事件!