限制CheckedListBox中的选中项

时间:2015-08-27 11:31:31

标签: c# checkedlistbox

我有一个带有折线图的主表单,它有10个可以显示的系列。这些系列中的数据将由用户输入文本框并添加到相应的列表中,然后将逐个索引地转移到相应的图表系列中。

我已经设置了一个名为Options的辅助表单,我希望它允许用户控制任何时候显示哪个系列。我试图使用一个物品名称与图表系列名称相匹配的checkedlistbox来做到这一点。 这样做很好,但我的用户要求一次只有两个系列在图表上,以避免混淆。

我正在寻找的是一种对checkedlistbox进行编程的方法,这样一旦检查了两个项目,在删除其中一个现有检查之前不能再检查。 这似乎是一个非常简单的概念,但我似乎无法找到如何逐个“禁用”列表项。这是我到目前为止所做的:

public void disableUnchecked()
{
    int checkedCount = 0; //tracks how many items are already checked

    //loop through all items in listbox
    for (int index = 0; index < chListBoxChartSeries.Items.Count; ++index)
    {
        //if item is checked
        if (chListBoxChartSeries.CheckedItems.Contains(chListBoxChartSeries.Items[index]))
        {
            //increment tracker variable
            ++checkedCount;
        }
    }

    //once loop has finished, if 2 items are checked
    if (checkedCount == 2)
    {
        //don't let anything else be checked
        //something to disable unchecked items
    }
}

我认为我不远,只需要找到一种方法来访问和禁用单个项目。如果有人能指出我正确的方向,我真的很感激!

由于

标记

1 个答案:

答案 0 :(得分:4)

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if (e.NewValue == CheckState.Checked && checkedListBox1.CheckedItems.Count >= 2)
        e.NewValue = CheckState.Unchecked;
}