110,555
社区成员
发帖
与我相关
我的任务
分享
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);
}
}
}
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;
}
}
}
checkBox1.CheckedChanged -= new EventHandler(checkBox1_CheckedChanged);
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked)
{
//如果选中状态为选中时,判断此时选中的items和总items是否相等
//但此时当前的被操作的item的状态并没有改变,所以要在选中的数量上+1进行比较
//当满足条件时,先取消checkbox的注册然(防止改变状态后重新触发checkbox的事件)
//再改变checkbox的选中状态
//下面取消选中的原理相同
if (checkedListBox1.CheckedItems.Count + 1 == checkedListBox1.Items.Count)
{
checkBox1.CheckedChanged -= new EventHandler(checkBox1_CheckedChanged);
checkBox1.Checked = true;
}
}
else
{
if (checkedListBox1.CheckedItems.Count - 1 < checkedListBox1.Items.Count)
{
checkBox1.CheckedChanged += new EventHandler(checkBox1_CheckedChanged);
checkBox1.Checked = false;
}
}
//重新对checkbox进行事件绑定
checkBox1.CheckedChanged += new EventHandler(checkBox1_CheckedChanged);
}
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked)
{
//如果选中状态为选中时,判断此时选中的items和总items是否相等
//但此时当前被操作的item的状态并没有改变,所以要在选中的数量上+1
//下面取消选中的原理相同
if (checkedListBox1.CheckedItems.Count + 1 == checkedListBox1.Items.Count)
checkBox1.Checked = true;
}
else
{
if (checkedListBox1.CheckedItems.Count - 1 < checkedListBox1.Items.Count)
checkBox1.Checked = false;
}
}