猿问

选中的组合框文本出现问题

我希望在检查复选框时更改组合框文本,但它有某种延迟。

我认为问题在于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();

    }

}


GCT1015
浏览 118回答 1
1回答

猛跑小猪

您不需要 cclb_ItemCheck 事件中的所有这些代码。现在你有延迟,因为每次你检查某些东西时,你都会有两个完全不必要的 foreach 循环。如果我正确理解你的问题,你的 cclb_ItemCheck 应该看起来像这样:private&nbsp;void&nbsp;ccb_ItemCheck(object&nbsp;sender,&nbsp;ItemCheckEventArgs&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;CCBoxItem&nbsp;item&nbsp;=&nbsp;ccbParent.Items[e.Index]&nbsp;as&nbsp;CCBoxItem; &nbsp;&nbsp;&nbsp;&nbsp;ccbParent.Text&nbsp;+=&nbsp;item.Name.toString()&nbsp;+&nbsp;",&nbsp;"; }或者类似的东西......我建议您创建一个新项目并按照您提供的博客文章链接中的示例进行操作。
随时随地看视频慕课网APP
我要回答