我希望在检查复选框时更改组合框文本,但它有某种延迟。我认为问题在于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 事件中的所有这些代码。现在你有延迟,因为每次你检查某些东西时,你都会有两个完全不必要的 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 关注
- 117 浏览
添加回答
举报
0/150
提交
取消