【问题标题】:Enable/Disable graph series with listbox selection使用列表框选择启用/禁用图形系列
【发布时间】:2018-06-15 09:18:46
【问题描述】:

我正在尝试使用列表框 (lb) 选择来控制 C# 中折线图上显示的系列。

private void lbSERIES_SelectedIndexChanged(object sender, EventArgs e)
    {
        int item_count = 0;
        foreach (var item in lbSERIES.Items)
        {

            if (lbSERIES.SelectedItems.Contains(item))
            {
                chart1.Series[item_count + 2].Enabled = true;
            }
            else
            {
                chart1.Series[item_count + 2].Enabled = false;
            }
            item_count++;
        } // end for each item check 
    } // end selection changed

但是,当代码到达这部分时,我会收到错误消息

未处理的异常...此枚举器绑定到的列表已被修改。只有列表不变时才能使用枚举器

我不确定是什么导致了这个问题。据我了解,我没有在 foreach 循环期间更改列表框项目。是什么导致了这个错误,我该如何解决?

【问题讨论】:

    标签: c# charts listbox


    【解决方案1】:

    您只需将 foreach 替换为 for。

    在执行 foreach 时,您无法操作集合中的项目

    private void lbSERIES_SelectedIndexChanged(object sender, EventArgs e)
        {
            for (int i = 0; i < lbSERIES.Items.Count; i++)
            {    
                if (lbSERIES.SelectedItems.Contains(lbSERIES.Items[i]))
                {
                    chart1.Series[i + 2].Enabled = true;
                }
                else
                {
                    chart1.Series[i + 2].Enabled = false;
                }
            } // end for each item check 
        } // end selection changed
    

    【讨论】:

    • 我正在处理另一个集合(图表)。代码不使用“for”而不是“foreach”编译。有没有其他的修改?
    • 必须这样编译,有什么问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多