【问题标题】:Limit checked items in CheckedListBox限制 CheckedListBox 中的选中项
【发布时间】:2015-08-27 11:31:31
【问题描述】:

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

我设置了一个名为“选项”的辅助表单,希望用户可以随时控制显示哪些系列。我尝试使用一个带有与图表系列名称匹配的项目名称的选中列表框来执行此操作。 这工作正常,但我的用户要求一次只在图表上显示两个系列以避免混淆。

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

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
    }
}

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

谢谢

标记

【问题讨论】:

标签: c# checkedlistbox


【解决方案1】:
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if (e.NewValue == CheckState.Checked && checkedListBox1.CheckedItems.Count >= 2)
        e.NewValue = CheckState.Unchecked;
}

【讨论】:

  • 为了让它有用,必须将checkedListBox1_ItemCheck添加到checkedListBox1.ItemCheck,例如:checkedListBox1.ItemCheck += checkedListBox1_ItemCheck;
猜你喜欢
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多