您好,登錄后才能下訂單哦!
在.NET中,可以使用ListView控件的內置功能來實現項目的拖拽排序。以下是一個簡單的示例,展示了如何在C#中實現這個功能:
首先,確保你的ListView控件的View
屬性設置為Details
,并且AllowDrop
屬性設置為true
。
為ListView控件添加ItemDrag
和DragEnter
事件處理程序。在ItemDrag
事件中,我們將啟動拖拽操作。在DragEnter
事件中,我們將設置允許拖拽操作。
private void listView_ItemDrag(object sender, ItemDragEventArgs e)
{
listView.DoDragDrop(e.Item, DragDropEffects.Move);
}
private void listView_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
DragOver
和DragDrop
事件處理程序。在DragOver
事件中,我們將計算鼠標指針所在的位置,并在該位置顯示一個插入標記。在DragDrop
事件中,我們將實際執行項目的移動操作。private void listView_DragOver(object sender, DragEventArgs e)
{
Point point = listView.PointToClient(new Point(e.X, e.Y));
ListViewItem item = listView.GetItemAt(point.X, point.Y);
if (item != null)
{
int insertIndex = item.Index;
Rectangle itemBounds = item.GetBounds(ItemBoundsPortion.Entire);
if (point.Y > itemBounds.Top + (itemBounds.Height / 2))
{
insertIndex++;
}
listView.InsertionMark.AppearsAfterItem = insertIndex > item.Index;
listView.InsertionMark.Index = insertIndex;
}
else
{
listView.InsertionMark.Index = -1;
}
}
private void listView_DragDrop(object sender, DragEventArgs e)
{
ListViewItem draggedItem = (ListViewItem)e.Data.GetData(typeof(ListViewItem));
int insertIndex = listView.InsertionMark.Index;
if (insertIndex >= 0)
{
listView.Items.Remove(draggedItem);
listView.Items.Insert(insertIndex, draggedItem);
}
}
現在,當你運行應用程序時,你應該能夠通過拖拽ListView控件中的項目來對它們進行排序。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。