winform listboxview 全选与全不选

来源:互联网 发布:如何应聘淘宝模特 编辑:程序博客网 时间:2024/06/14 20:15

 对选项Item Checked事件做如下处理,取消全选的时候也会触发下面的事件,所以需要加条件进行判断。

private void lstvBusiness_belong_ItemChecked(object sender, ItemCheckedEventArgs e)
        {
            //当被选择的是“全部”才触发以下事件
            if (e.Item.Index == 0)
            {
                //如果当前被选择就全选所有选项
                if (lstvBusiness_belong.Items[0].Checked)
                    for (int i = 1; i < lstvBusiness_belong.Items.Count; i++)
                    {
                        lstvBusiness_belong.Items[i].Checked = true;
                    }
                //当tag值为Null时才是手动开关主开关的操作,自动变动情况不执行该段代码
                else if (lstvBusiness_belong.Items[0].Tag == null)
                    for (int i = 1; i < lstvBusiness_belong.Items.Count; i++)
                    {
                        lstvBusiness_belong.Items[i].Checked = false;
                    }
            }
            //开关全部打开,且主开关关闭状态,结果:主开关打开
            if (lstvBusiness_belong.CheckedItems.Count + 1 == lstvBusiness_belong.Items.Count && lstvBusiness_belong.Items[0].Checked == false)
            {
                lstvBusiness_belong.Items[0].Tag = null;
                lstvBusiness_belong.Items[0].Checked = true;
            }
            //开关关闭,且主开关开着,结果:关闭开关主
            if (e.Item.Index != 0 && e.Item.Checked == false && lstvBusiness_belong.Items[0].Checked == true)
            {
                //此时会因为主开关的状态变化然后对其他开关做一次变动,这里就要用到中间值去做判断,是否是手动对主开关进行的操作
                //如果是手动做的操作才做处理
                lstvBusiness_belong.Items[0].Tag = 1;
                lstvBusiness_belong.Items[0].Checked = false;
            }
        }

原创粉丝点击