台灣最大程式設計社群網站
線上人數
1801
 
會員總數:242275
討論主題:187366
歡迎您免費加入會員
討論區列表 >> VB.NET >> 多個ListView互相拖曳
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
多個ListView互相拖曳
價值 : 50 QP  點閱數:109 回應數:5

樓主

黑熊
門外漢
0 5
150 24
發送站內信

我想做到有多個ListView互相拖曳,如下圖


假設我拖曳ListView1裡的Item到ListView3,想做到刪除ListView1的Item並新增至ListView3內
我會需要用到ListView1.DragLeave和ListView3.DragDrop這兩個物件的事件

但如果項圖片上這樣在拖曳時經過ListView2的話會觸發ListView2.DragLeave事件
這樣會讓其他不應該執行的程式被觸發,有什麼方法可以讓這個事件被忽略嗎?

還有我要怎麼判斷被拖曳的物件他所屬的資料型態是否與我預期的相符呢?
MSDN GetDataPresent方法
這個好像可以做我想要做的事,但是不知道要怎麼判斷拖曳的資料型別,所以還在研究

搜尋相關Tags的文章: [ ListView ] , [ 拖曳 ] , [ 托放 ] ,
本篇文章發表於2018-04-17 16:21
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

練武功
檢舉此回應
你可以考慮"共用事件"
下面是兩個ListView共用MouseDown和MouseMove事件,可以達到移動ListView1和ListView2


至於你要的目的,請你自己根據共用事件的方法,再研究看看。
本篇文章回覆於2018-04-19 16:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

Ader Chen
檢舉此回應

我個人通常在事件函式用全域旗標判斷是否要執行某些選擇性程序,
類似您另一篇(http://www.blueshop.com.tw/board/FUM20050124191756KKC/BRD20180411151410IX1.html) 中的 InitialCount,
不確定有沒有更好的方法,
供參考.
本篇文章回覆於2018-04-20 00:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

Ader Chen
檢舉此回應

判斷被拖曳的物件的資料型別,
可以在 DragOver 或是 DragDrop 事件中使用 GetDataPresent 判斷,
例如:
DragOver: https://msdn.microsoft.com/zh-tw/library/system.windows.forms.control.dragover(v=vs.90).aspx
DragDrop: https://msdn.microsoft.com/zh-tw/library/system.windows.forms.control.dragdrop(v=vs.90).aspx
其中用 If (e.Data.GetDataPresent(GetType(System.String))) Then 判斷型別是否是字串.
本篇文章回覆於2018-04-20 00:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

黑熊
檢舉此回應
回應:練武功
感謝你提供的思考方向,我試著從你的想法來做做看吧
我之前使用共用事件時都是在一個事件的 Handles 後面加了很多控制項的事件
然後在裡面用 Select Case Sender.Name撈出觸發事件的控制項
想請問這和你的寫法有什麼差異嗎?還是說兩個做的都是同一件事只是方法不同呢?
另外想問關於CType的問題,CInt、CStr這些東西怎麼用,但CType就不是很了解了
我可以把CInt或CStr是CTYpe(?,Integer)與CType(?,String)嗎?



回應:Ader Chen
原來是這樣判定資料型別啊,我在看GetDataPresent(String, Boolean)一直不知道是什麼意思,原來是我用錯方法了...
本篇文章回覆於2018-04-20 10:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

練武功
檢舉此回應
1.我不知道你如何使用Select Case Sender.Name來寫程式,至於差異性不必太在意,能夠跑最重要。
2.ctype、cint、cstr就是轉換資料型態,網路上有很多資料。其實VB很人性化,你不用ctype,還是可以跑程式。
本篇文章回覆於2018-04-20 16:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

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