C# 如何从checkedListBox中取消选择上次选中的项目?

C# 如何从checkedListBox中取消选择上次选中的项目?,c#,.net,winforms,C#,.net,Winforms,我想在CheckedListBox中禁用多重选择。我试过了 checkedListBoxWersje.SelectionMode = SelectionMode.One 但我仍然可以检查多个项目。所以我想取消选中上次选中的项目。可能吗?这是有效的代码 if(e.NewValue.Equals(CheckState.Checked)) for (int i = 0; i < checkedListBox1.Items.Count; ++i) if (i != e.I

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

checkedListBoxWersje.SelectionMode = SelectionMode.One

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

这是有效的代码

if(e.NewValue.Equals(CheckState.Checked))
    for (int i = 0; i < checkedListBox1.Items.Count; ++i)
        if (i != e.Index)
            checkedListBox1.SetItemChecked(i, false);
if(e.NewValue.Equals(CheckState.Checked))
对于(int i=0;i
这是有效的代码

if(e.NewValue.Equals(CheckState.Checked))
    for (int i = 0; i < checkedListBox1.Items.Count; ++i)
        if (i != e.Index)
            checkedListBox1.SetItemChecked(i, false);
if(e.NewValue.Equals(CheckState.Checked))
对于(int i=0;i
您是否考虑过使用带有单选按钮的GroupBox

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

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

您是否考虑过使用带有单选按钮的GroupBox

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

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

如果你只能选择一个按钮,你不应该使用单选按钮吗?@xanatos正是我的想法。但是没有RadioButtonListBox。选择模式是不同的,它决定了一次可以选择多少项。对于其他列表类型控件,选择由蓝色背景指示。如果您只能选择一个按钮,是否应该使用单选按钮?@xanatos正是我的想法。但是没有RadioButtonListBox。选择模式与代码不同,它决定了一次可以选择多少项。对于其他列表类型控件,选择由蓝色背景指示。