【问题标题】:Limited selection in CheckedListBoxCheckedListBox 中的有限选择
【发布时间】:2014-08-14 10:26:26
【问题描述】:

我有一个 CheckedBoxList 并且我想限制您可以选择的选择(选中),例如 Box 中的 10 个项目中只有 2 个。实际上不是 10 个,也可能是 13 个等等。

我已经尝试过使用此代码,但在这里我只能选择一个项目(我想选择多个项目但不是全部)。

    private void checkedListBox_ListOfCars_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        if (e.NewValue == CheckState.Checked)
        {
            for (int ix = 0; ix < checkedListBox_ListOfCars.Items.Count; ++ix)
            {
                if (e.Index != ix) checkedListBox_ListOfCars.SetItemChecked(ix, false);
            }
        }
    }

【问题讨论】:

  • 你设置CheckedListBox.SelectionMode = SelectionMode.MultiSimple
  • @JunGuo 我要在哪里设置?
  • 你用的是winform,对吧?可以在 UI 设计器的属性页中设置,也可以在代码中设置。
  • @JunGuo 无法设置,SelectionMode 现在设置为“One”!是的,我在 Visual Studio 中使用 winform。

标签: c# visual-studio-2012 checkboxlist checkedlistbox


【解决方案1】:

您可以通过为表单添加一个变量来做到这一点,例如

int checkedItemsLimit = 2; // As you wrote in your question. This number is just an example.

每次在 ItemCheck 事件中检查某些内容时,您都可以检查 checkListBox_ListOfCars 中检查的项目数是否等于 checkedItemsLimit。如果存在,则取消选中最后一个检查。代码将如下所示:

 private void checkedListBox_ListOfCars_ItemCheck(object sender, ItemCheckEventArgs e)
 {
     if (e.NewValue == CheckState.Checked)
     {
         if (checkedListBox_ListOfCars.CheckedItems.Count == checkedItemsLimit) 
         {
             e.NewValue = CheckState.Unchecked;
         }    
     }
 }

【讨论】:

  • 啊……现在可以了。 2小时前它没有工作,我不知道为什么!不过非常感谢!!!!!!!!!!!!
猜你喜欢
  • 1970-01-01
  • 2016-11-06
  • 2011-02-14
  • 2015-06-18
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-17
相关资源
最近更新 更多