当前位置: 移动技术网 > IT编程>开发语言>.net > wpf Listbox 实现按住ctrl键来取消选中

wpf Listbox 实现按住ctrl键来取消选中

2018年12月11日  | 移动技术网IT编程  | 我要评论

跑跑猴岛游戏论坛,快乐大本营20091031,谈股论金股市聊聊吧

1. 首先继承一个listbox,来获得按住ctrl键时,点击的item

  public class listboxex : listbox
   {
      public beattemplatewave getanitem()
        {           
            var obj = this.anchoritem;
            if (obj != null)
            {
                type type = obj.gettype();
                system.reflection.propertyinfo propertyinfo = type.getproperty("item", bindingflags.instance | bindingflags.nonpublic);
                system.reflection.propertyinfo propertyinfo2 = type.getproperty("index", bindingflags.instance| bindingflags.nonpublic);
                beattemplatewave value_old = (beattemplatewave)propertyinfo.getvalue(obj, null); //获取属性值
                return value_old;
            }
            else
            {
                return null;
            }
        }
//重写选中
public void setlist(list<beattemplatewave> list)
{
this.setselecteditems(list);
}
     
   }

2 在listbox 的调用处: 获得listbox 的选中项:selecteditemslist

3 在mouseleftdown事件里面添加处理程序

   private void mouseleftbuttonuphandler(elementmousebuttoneventmerge embem)
        {
           
            listboxex listbox = (embem.sender as listboxex);
            if (keyboard.iskeydown(key.leftctrl) || keyboard.iskeydown(key.rightctrl))
            {
                list<beattemplatewave> selectlist = new list<beattemplatewave>();
                var obj = (embem.sender as listboxnowheelex).getanitem();
                if (selecteditemslist != null)
                {
                    var templist = selecteditemslist.ilisttocollection<beattemplatewave>();
                    if (obj != null)
                    {
//判断鼠标点击的项在不在选中的里面,如果不在,则加入临时集合,如果在选中项里面,则不加入临时集合, if (templist.any(p => p.r == obj.r)) { foreach (beattemplatewave a in templist) { if (a.r == obj.r) { } else {
selectlist.add(a); } } } else { selectlist.add(obj); selectlist.addrange(templist); } } else { selectlist.addrange(templist); } listbox.setlist(selectlist); //重新选中 selecteditemslist = selectlist;//将临时集合赋值给选中项 重写选中 } return; } else { if (listbox.selecteditems != null) { selecteditemslist = listbox.selecteditems; var item = selecteditemslist; if (item.count == 0) return; } } }

  

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网