最近有開發需求涉及的listview 的listviewitem的排序的問題,找了些資料都是斷斷序序的,把我的實現方法總結一下,
主要實現代碼如下:
Code
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;
}
其實就是幾個簡單的邏輯順序,如果朋友有更好的方法,希望能與你交流。謝謝!