C# C无法从图表中删除自定义标签
我想从图表C中的特定位置删除自定义标签 行数据是由datagrid填充数据的列表 试试这个:C# C无法从图表中删除自定义标签,c#,C#,我想从图表C中的特定位置删除自定义标签 行数据是由datagrid填充数据的列表 试试这个: foreach (var item in rowdata) { if (!(this.chart1.ChartAreas[0].AxisX.CustomLabels.Contains(checkedListBox1.SelectedItem))) { if (e.NewValue == CheckState.Checked) {
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。它给出的异常序列包含多个匹配元素这是我以前的代码,其中数据从gridview填充到列表中
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++;
}