【问题标题】:Chart - Disable Series by Checkbox图表 - 按复选框禁用系列
【发布时间】:2018-07-06 14:29:14
【问题描述】:

我正在尝试使用复选框启用和禁用图表上的线点。 但是,当我单击复选框时,设置为 DateTime 的 x 轴正在发生变化!这很烦人。以下是之前和之后的图片示例。

这是选中复选框后的图像。 我想尝试阻止这种情况发生并为每个系列添加复选框,以便我可以启用和禁用这些行。然后用户一次只能查看一个。

代码如下:

private void radCheckBox1_ToggleStateChanged(object sender, Telerik.WinControls.UI.StateChangedEventArgs args)
    {
        if (radCheckBox1.Checked == false)
        {
            chart1.Series["Series1"].Points.Clear();
        }
        else
        {
            for (int x = 0; x < HRM.Active.DataRows.Count; x++)
            {
                chart1.Series["Series1"].Points.AddXY(x, 
                       HRM.Active.DataRows.ElementAt(x).Speed);
            }
        }
    }

【问题讨论】:

  • 老实说,这有点令人困惑。从您的另一篇文章中,我会认为系列数据是数据绑定到 DataTable 的。现在您似乎将它们添加到循环中,HRM 是什么?查看图表和标签,我猜 xValues 的解释并不一致。你可以试试:Points.AddXY(x.ToOADate(), ...); 吗?
  • 这也让我感到困惑,嗯,不,那是行不通的。这是一个困难的。
  • DateTimes in Chart 不是很直观,因为这些值将始终在内部映射到 double。不过,我的回答应该很简单..

标签: c# winforms checkbox charts


【解决方案1】:

让Series消失再回来的最简单方法是这样的:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    Series sz = chart1.Series["Zeroes"];
    sz.Enabled = checkBox1.Checked;
}

关于代码和您发布的图片的更多说明:

chart1.Series["Series1"].Points.AddXY(x, HRM.Active.DataRows.ElementAt(x).Speed);

不保证将 X 值添加为可能的日期。相反,您可能需要使用此转换:

chart1.Series["Series1"].Points.AddXY(x.ToOADate(),
                                      HRM.Active.DataRows.ElementAt(x).Speed);

但对您的实际数据一无所知,我无法确定这一点。但请记住:Chart 中的 DateTimes 不是很直观,因为值将始终在内部映射到 double

但是使用Enabled 属性,您不需要进行所有杂乱的清除和重新添加任何DataPoints 的工作!

【讨论】:

  • 您在顶部的工作有效,但是当您禁用第一个系列时,我将其更改为 X 轴。很有趣,但这样会启用和禁用它。
  • 是的,我认为您需要保留第一个系列,因为这似乎是您图表中 x 轴的规则!只设置了它的 XValueMember,对吧?
  • 已修复,谢谢!只有第一个系列设置为日期/时间。所以我将其他每个设置为日期/时间。然后,当您启用和禁用您在这篇文章中所说的系列时,它会起作用。 :) 将 XValueMember 设置为日期/时间,但最初只能让我在图表上拥有一定数量的点,但缩放功能有助于查看更多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
相关资源
最近更新 更多