我用下面的代碼在CheckedListBox檢查項目的數量限制爲1:ItemChecked事件處理
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (checkedListBox1.CheckedItems.Count == 1)
{
Boolean isCheckedItemBeingUnchecked = (e.CurrentValue == CheckState.Checked);
if (isCheckedItemBeingUnchecked)
{
e.NewValue = CheckState.Checked;
}
else
{
Int32 checkedItemIndex = checkedListBox1.CheckedIndices[0];
checkedListBox1.ItemCheck -= checkedListBox1_ItemCheck;
checkedListBox1.SetItemChecked(checkedItemIndex, false);
checkedListBox1.ItemCheck += checkedListBox1_ItemCheck;
}
return;
}
}
但在若干情況下,我需要清除所有選中的項目。我使用下面的代碼來試圖做到這一點,但以前的事件阻止了它的工作。我怎麼能做到這一點?謝謝。
public void ClearChecked()
{
foreach (int checkedItemIndex in checkedListBox1.CheckedIndices)
{
checkedListBox1.SetItemChecked(checkedItemIndex, false);
}
}
退訂事件首先,然後調用清除選中。或者創建一個指示何時忽略項目更改事件的實例變量。 – mservidio
我想知道爲什麼你不是簡單地使用一個ListBox,其中只能選擇1個值... – Davio