双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

关于checkedlistbox控制checkbox的问题

zwkycg zwkycg 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
一个checkbox,一个checkedlistbox;现在已经实现用checkbox控制checkedlistbox全选和全不选。代码如下:
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
checkedListBox1.SetItemChecked(i, true);
}
}
else
{
for (int i = 0; i < this.checkedListBox1.Items.Count; i++)
{
checkedListBox1.SetItemChecked(i, false);
}
}
}

当点击checkbox使得checkedlistbox全选后,还想实现将checkedlistbox里的某一项前面的勾去掉后,checkbox前面的勾也去掉。代码如下:
private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetItemChecked(i) == false)
{
checkBox1.Checked = false;
break;
}
}
}


但是问题来了:此时,checkbox前面的勾去掉的同时,checkedlistbox所有项前面的勾也都去掉了。调试了一下,发现原因是checkedListBox1_SelectedIndexChanged被调用后,紧接着checkBox1_CheckedChanged被调用,导致把checkedlistbox所有项前面的勾也都去掉了。怎么解决这个问题呢??

另外发现,如果不先点击checkbox,只操作checkedlistbox的话,checkedListBox1_SelectedIndexChanged被调用后checkBox1_CheckedChanged就不会被调用。
...全文
评论 5
收藏 已收藏
分享
返回顶部
zwkycg
C# 111,129 成员 642,540 内容