限制CheckedListBox中的选中项

本文关键字:限制 CheckedListBox | 更新日期: 2023-09-27 18:10:01

我有一个主要形式的折线图,它有10个可能的系列,它可以显示。这些系列中的数据将由用户输入到文本框中,并添加到各自的List<>中,然后将逐个索引转移到各自的图表系列中。

我已经设置了一个称为选项的次要形式,我希望它将允许用户控制在任何时候显示哪个系列。我尝试使用一个带有与图表系列名称相匹配的项目名称的复选列表框来做到这一点。这工作得很好,但我的用户要求一次只能在图表上显示两个系列,以避免混淆。

我正在寻找的是一种方法来编程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
    }
}

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

感谢马克

限制CheckedListBox中的选中项

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