您可以通過添加對CheckedListBox事件支票ItemCheck和使用功能這樣做:
private static bool checkIfAllowed(CheckedListBox listBox) {
if (listBox.CheckedItems.Count > 0) {
return false;
}
return true;
}
然後在事件中,你會有這樣的:
if (checkIfAllowed) {
...
} else {
}
另外你可以通過添加另一個函數/方法來改善這種情況,在允許檢查項目之前將取消選中所有項目。所以當用戶點擊一些複選框時,所有其他複選框都未選中。
,取消勾選所有項目只需使用:
private static void uncheckAll(CheckedListBox listBox) {
IEnumerator myEnumerator;
myEnumerator = listBox.CheckedIndices.GetEnumerator();
int y;
while (myEnumerator.MoveNext() != false) {
y = (int)myEnumerator.Current;
listBox.SetItemChecked(y, false);
}
}
所以在ItemCheck事件時,你必須運行uncheckAll(yourListBox)
第一,然後讓這個項目進行檢查。
編輯: 我用下面的代碼測試過它,它工作。沒有如果它拋出異常。
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) {
if (e.NewValue == CheckState.Checked) {
IEnumerator myEnumerator;
myEnumerator = checkedListBox1.CheckedIndices.GetEnumerator();
int y;
while (myEnumerator.MoveNext() != false) {
y = (int)myEnumerator.Current;
checkedListBox1.SetItemChecked(y, false);
}
}
}
爲什麼使用一個選中的列表框。你可以使用一個簡單的列表框。 – 2010-12-08 11:55:52
用戶明確要求能夠「檢查」不幸的。如果沒有證明是一種簡單的方法來限制一次可以檢查的項目的數量,那麼我會像你說的那樣使用正常的列表框。 – AndrewC 2010-12-08 11:58:10
改爲使用組合框。 DropDownStyle =簡單如果你真的想要一個列表。 – 2010-12-08 13:01:28