web-dev-qa-db-ja.com

CheckedListBoxを使用すると、1つの項目のみをチェックできます

私のCheckedListBoxアプリでは、1つの項目のみをチェックできるようにしたいです。

これらのプロパティはすでに設定されています

checkOnClick = true;
SelectionMode = One;

任意のアドバイスをいただければ幸いです

12
Ahmed

以下のように、ItemCheckイベントの他のすべてのアイテムのチェックを外します。

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) {
      for (int ix = 0; ix < checkedListBox1.Items.Count; ++ix)
        if (ix != e.Index) checkedListBox1.SetItemChecked(ix, false);
    }
29
Zaki

これを行うための最良の方法は次のとおりです。

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if (e.NewValue == CheckState.Checked && checkedListBox1.CheckedItems.Count > 0)
    {
        checkedListBox1.ItemCheck -= checkedListBox1_ItemCheck;
        checkedListBox1.SetItemChecked(checkedListBox1.CheckedIndices[0], false);
        checkedListBox1.ItemCheck += checkedListBox1_ItemCheck;
    }
}

ループがない方が常に優れています。

7
Nicolas Tyler