C#无法从图表中删除自定义标签

时间:2014-08-07 13:11:53

标签: c#

我想从图表C#

中的特定位置删除自定义标签

行数据是一个列表,其中数据由datagrid

填充
foreach (var item in rowdata)
{ 
    if (!(this.chart1.ChartAreas[0].AxisX.CustomLabels.Contains(checkedListBox1.SelectedItem)))
    {
        if (e.NewValue == CheckState.Checked)
        {
            var s = new CustomLabel(temp + 1.5, m + 1.5, item, labelrow, LabelMarkStyle.LineSideMark);

            this.chart1.ChartAreas[0].AxisX.CustomLabels.Add(s);
        }
        else
        {
            var s = new CustomLabel(temp + 1.5, m + 1.5, item, labelrow, LabelMarkStyle.LineSideMark);

            mb = this.chart1.ChartAreas[0].AxisX.CustomLabels.IndexOf(s);
            this.chart1.ChartAreas[0].AxisX.CustomLabels.RemoveAt(mb);
        }
    }
    temp = m;
    m++;
}

1 个答案:

答案 0 :(得分:0)

试试这个:

foreach (var item in rowdata)
{ 
    if (!(this.chart1.ChartAreas[0].AxisX.CustomLabels.Contains(checkedListBox1.SelectedItem)))
    {
        if (e.NewValue == CheckState.Checked)
        {
            var s = new CustomLabel(temp + 1.5, m + 1.5, item, labelrow, LabelMarkStyle.LineSideMark);

            this.chart1.ChartAreas[0].AxisX.CustomLabels.Add(s);

        }
        else
        {
            // You can make this filter more specific if necessary
            var remLabel = this.chart1.ChartAreas[0].AxisX.CustomLabels
                .SingleOrDefault(cl=>cl.FromPosition == temp + 1.5 
                                     && cl.ToPosition == m + 1.5);
            if (remLabel != null)
                this.chart1.ChartAreas[0].AxisX.CustomLabels.Remove(remLabel);
        }
    }
    temp = m;
    m++;
}

您的代码存在的问题是正在比较对象引用。您要删除的新对象不在集合中。可能你的mb变量总是-1。