我现在想像windows资源管理器一样  通过拖动listview中的项来改变项的显示顺序   listview有没有什么属性可以直接实现?

解决方案 »

  1.   

    好像没有属性可以实现这个功能。
    自己写一个listview吧。
      

  2.   

    这段代码可以借鉴下private ListViewItem itemDraged=null;//定义拖动的item
            private ListViewItem itemSelected = null;//定义拖动到位置的item
            bool isdrag = false;//是否拖动状态
    //ItemMouseHover方法实现鼠标拖动到某个元素上时更改该元素的被选中状态
            private void lsvFilms_ItemMouseHover(object sender, ListViewItemMouseHoverEventArgs e)
            {
                itemSelected = e.Item;
                if (isdrag)
                {
                    e.Item.Selected = true;
                }
                else
                {
                    e.Item.Selected = false;
                }
            }
    //ItemDrag获取被拖动的item
            private void lsvFilms_ItemDrag(object sender, ItemDragEventArgs e)
            {
                itemDraged = (ListViewItem)e.Item;
                this.Cursor = Cursors.Hand;
                isdrag = true;
            }
    //MouseUp当拖动放开鼠标时,进行位置调整操作
            private void lsvFilms_MouseUp(object sender, MouseEventArgs e)
            {
                isdrag = false;
                if ((itemSelected != null) && (itemDraged != null))
                {
                    if (itemDraged.Index != itemSelected.Index)
                    {
                                                               this.lsvFilms.Items.RemoveAt(itemDraged.Index);
                        this.lsvFilms.Items.Insert(itemSelected.Index, itemDraged);
                        itemDraged = null;
                        itemSelected = null;
                                       }
                }
                this.Cursor = Cursors.Default;
            }
      

  3.   

    listview停止拖放的事件 我拖动的时候发生ItemDrag事件 停止拖动的时候dragdrop事件怎么发生不了啊