ListBox 是用於顯示清單的物件,可以用來單選和多選,本篇來示範使用滑鼠左鍵按住清單,拖曳到其他選項上後放開滑鼠左鍵,讓選取的內容移動到新的位置。
首先先動態建立 ListBox ,指定為可以拖曳,並加入至 Form 上
加入範例選項
定義點擊時會將點選的選項紀錄,讓拖曳時使用。並且判斷滑鼠放開的位子,將原先資料移除後重新新增到指定位子
首先先動態建立 ListBox ,指定為可以拖曳,並加入至 Form 上
ListBox listBox = new();
listBox.AllowDrop = true;
this.Controls.Add(listBox);
加入範例選項
listBox.Items.Add("Item 1");
listBox.Items.Add("Item 2");
listBox.Items.Add("Item 3");
listBox.Items.Add("Item 4");
定義點擊時會將點選的選項紀錄,讓拖曳時使用。並且判斷滑鼠放開的位子,將原先資料移除後重新新增到指定位子
listBox.MouseDown += (_, _) =>
{
if (listBox.SelectedItem == null) return;
listBox.DoDragDrop(listBox.SelectedItem, DragDropEffects.Move);
};
listBox.DragOver += (sender, args) => { args.Effect = DragDropEffects.Move; };
listBox.DragDrop += (sender, args) =>
{
if (args.Data == null) return;
Point point = listBox.PointToClient(new Point(args.X, args.Y));
int index = listBox.IndexFromPoint(point);
if (index < 0) index = listBox.Items.Count - 1;
object data = args.Data.GetData(typeof(string));
listBox.Items.Remove(data);
listBox.Items.Insert(index, data);
};
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com