我希望在檢查復選框時更改組合框文本,但它有某種延遲。我認為問題在于ItemCheckEventHandler,如果是的話我該怎么解決?我嘗試過更換:private void cclb_ItemCheck(object sender, ItemCheckEventArgs e) {? ? if (ccbParent.ItemCheck != null) {? ? ? ? ccbParent.ItemCheck(sender, e);? ? ? ? ccbParent.Text = GetCheckedItemsStringValue();? ? }}和 :private void cclb_ItemCheck(object sender, ItemCheckEventArgs e){? ? List<string> checkedItems = new List<string>();? ? foreach (var item in cclb.CheckedItems) {? ? ? ? checkedItems.Add(item.ToString());? ? }? ? if (e.NewValue == CheckState.Checked) {? ? ? ? checkedItems.Add(cclb.Items[e.Index].ToString());? ? }? ? else {? ? ? ? checkedItems.Remove(cclb.Items[e.Index].ToString());? ? }? ? foreach (string item in checkedItems) {? ? ? ? ccbParent.ItemCheck(sender, e);? ? ? ? ccbParent.Text = GetCheckedItemsStringValue();? ? }}
1 回答

猛跑小豬
TA貢獻1858條經驗 獲得超8個贊
您不需要 cclb_ItemCheck 事件中的所有這些代碼?,F在你有延遲,因為每次你檢查某些東西時,你都會有兩個完全不必要的 foreach 循環。
如果我正確理解你的問題,你的 cclb_ItemCheck 應該看起來像這樣:
private void ccb_ItemCheck(object sender, ItemCheckEventArgs e) { CCBoxItem item = ccbParent.Items[e.Index] as CCBoxItem; ccbParent.Text += item.Name.toString() + ", "; }
或者類似的東西......我建議您創建一個新項目并按照您提供的博客文章鏈接中的示例進行操作。
- 1 回答
- 0 關注
- 145 瀏覽
添加回答
舉報
0/150
提交
取消