我想从图表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++;
}
答案 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。