台灣最大程式設計社群網站
線上人數
1577
 
會員總數:243159
討論主題:187978
歡迎您免費加入會員
討論區列表 >> VB.NET >> ListBox&ListView 拖曳排序
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
ListBox&ListView 拖曳排序
價值 : 100 QP  點閱數:400 回應數:7

樓主

黑熊
初學者
20 9
396 27
發送站內信

我有一個串列"List(Of DataTable)"你裝了一些資料表,想要做到讓資料表的名稱依照串列裡的順序顯示在ListView上
然後讓使用者可以用拖曳變更DataTable在List裡面的排序,示意圖如下所示


我現在不知道怎麼做才可以完成拖曳排序
拖曳排序的三種方法
我在網路上搜尋到這個,但只有執行檔沒有原始碼
我自己用ListBox寫出的拖曳是這個樣子(ListView比較複雜一些,所以想說先用簡單的物件測試)



但看起來和三個方法不太像,然後在網路上看到這個影片
DragDrop Listvew
影片所做的事情如下



看起來和我想要達成的目標很接近了,看他是用MoustDown、MouseUp、MouseMove、DragDrop、DragEnter幾個事件兜出來的
但是只用過MoustDown、MouseUp、MouseMove事件,另外兩個的使用時機與使用方法不是很了解
所以這個示範城市雖然精簡,但是因為沒有托放的城市概念,所以也看不懂
有找找看MSDN,但她寫的範例實在是太長了,看了我頭好痛啊.....
而且我現在還不知道這個拖曳相關的程式碼要怎麼用,所以就算有簡短的範例目前還是無法參透

而且大部分都是拖曳排序物件內的元素,但我希望可以做到的是我在重新排列ListView元素的同時可以同時調整List內部的DataTable排序
畢竟ListView上的資料都是從List來的,如果不同時排序就沒什麼意義了

--------------------------------------------------------------------------------------------------------
總結一下目前遇到的問題
1.有沒有說明DragDrop、DragEnter如操作的範例、影片、書、或是網站可以參考
2.如何讓ListView拖曳排序時可以同時排序List



搜尋相關Tags的文章: [ ListView ] , [ ListBox ] , [ 拖曳 ] , [ 排序 ] ,
本篇文章發表於2018-04-11 15:14
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

黑熊
檢舉此回應
目前看到三個看起來可以拿來讓我改寫的素材,但是卡在我不知道托放程式的概念,所以看不懂他在幹嘛

ListBox上下移動、拖動排序、兩個ListBox相互拖動

Dragdrop應用

[C#] 拖放應用 - ListBox
本篇文章回覆於2018-04-11 15:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

黑熊
檢舉此回應
看到一個用DataGridView做拖曳排序的,和我要目標很接近,不過還是不太了解它在幹嘛,努力參透中~~~

本篇文章回覆於2018-04-12 09:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

黑熊
檢舉此回應
用2樓的爛範例改點東西就完成拖曳排序與取得起放位置的參數這兩件事,雖然還是不知道它在幹什麼......


雖然可以完成目標了,但又出現了其他問題,如果拖曳時超過下圖紅色框框的區域就會出現錯誤,正在想有什麼方式可以解決
我也可以在創建控制項時就把物件大小調整好不讓使用者拉到不該去的區域,但是這樣只是隱藏問題,感覺不太正規,所以想找個完美的方法解決這個問題



本篇文章回覆於2018-04-12 10:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

黑熊
檢舉此回應
用其他的圖床顯示不出來,還是只能用論壇提供的圖床
本篇文章回覆於2018-04-12 10:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

黑熊
檢舉此回應
看到一個精簡的範例,對這托放事件有點初步的認識了

[轉貼] 最簡單 Drag Drop 範例使用

本篇文章回覆於2018-04-13 10:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

黑熊
檢舉此回應
這裡有講解拖放應用的一些說明,內容很詳細,可以了解一些拖放的概念
.NET中的 Drag and Drop 操作

終於寫出想要的功能了,雖然還是沒有完全的了解托放應用的觀念,但至少可以自己寫出東西了

本篇文章回覆於2018-04-13 14:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
最有價值解答

Ader Chen
檢舉此回應

綜合您另一篇 DragLeave 的問題(http://www.blueshop.com.tw/board/FUM20050124191756KKC/BRD20180417162056AFL.html)
如果 ListView2.DragLeave 也是同 6樓 ListView1_DragLeave 一樣的話,
個人覺得可以在(第78行) .items.removeat(InitialCount) 之後,
增加一行 InitialCount = -1
這樣另一個 DragLeave 的(第77行) If InitialCount <> -1 就可排除、避免刪錯項目.
供參考.
本篇文章回覆於2018-04-20 00:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.