![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 黑熊 ![]()
![]() |
![]() 假設我拖曳ListView1裡的Item到ListView3,想做到刪除ListView1的Item並新增至ListView3內 我會需要用到ListView1.DragLeave和ListView3.DragDrop這兩個物件的事件 但如果項圖片上這樣在拖曳時經過ListView2的話會觸發ListView2.DragLeave事件 這樣會讓其他不應該執行的程式被觸發,有什麼方法可以讓這個事件被忽略嗎? 還有我要怎麼判斷被拖曳的物件他所屬的資料型態是否與我預期的相符呢? MSDN GetDataPresent方法 這個好像可以做我想要做的事,但是不知道要怎麼判斷拖曳的資料型別,所以還在研究 |
1樓
不錯的參考
練武功 ![]() |
你可以考慮"共用事件"
下面是兩個ListView共用MouseDown和MouseMove事件,可以達到移動ListView1和ListView2 至於你要的目的,請你自己根據共用事件的方法,再研究看看。
本篇文章回覆於2018-04-19 16:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓 |
我個人通常在事件函式用全域旗標判斷是否要執行某些選擇性程序, 類似您另一篇(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
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |