如何从checkedListBox中取消选中上次检查的项目?

时间:2016-02-11 13:53:23

标签: c# .net winforms

我想在CheckedListBox中禁用多选。我试过了

checkedListBoxWersje.SelectionMode = SelectionMode.One

但我仍然可以检查多个项目。所以我想取消选择上次检查的项目。有可能吗?

2 个答案:

答案 0 :(得分:1)

这是有效的代码。

if(e.NewValue.Equals(CheckState.Checked))
    for (int i = 0; i < checkedListBox1.Items.Count; ++i)
        if (i != e.Index)
            checkedListBox1.SetItemChecked(i, false);

答案 1 :(得分:1)

您是否考虑过使用带有RadioButtons的GroupBox?

如果您真的想使用CheckedListBox,请考虑以下内容,一次只能检查一个项目。

namespace CheckListBoxSimple_C_Sharp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            checkedListBox1.ItemCheck += checkedListBox1_ItemCheck;
        }
        private const int maxNumberOfCheckedItems = 1; 
        void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
        {
            CheckedListBox items = (CheckedListBox)sender;
            if (items.CheckedItems.Count > (maxNumberOfCheckedItems - 1))
            {
                e.NewValue = CheckState.Unchecked;
            }            
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            checkedListBox1.Items.AddRange(new string[] { "John", "Paul", "George", "Ringo" });

            checkedListBox1.SetItemChecked(1, false);
            checkedListBox1.SetItemChecked(3, false);
        }
    }
}