星期日, 8月 14, 2022

[C#] ImageListView - 拖放功能

在 ImageListView 套件有內建檔案拖放功能,只要開啟就可以無腦使用,不用再去寫 DragEnter、DragDrop 等相關拖放事件,可以參考之前筆記

C# Code 開啟拖放功能
// 從控件內複製出來
imageListView1.AllowDrag = true;

// 拖曳進去控件
imageListView1.AllowDrop = true;

拖放效果


以系統管理員身分執行



根據 ImageListView 官方提供測試程式,確實只要開啟 AllowDrop 和 AllowDrag 就可以使用檔案拖放功能,但是整理範例筆記時發現,竟然只能使用 drag,drop 無法使用,追究原因發現,原來我開啟 VS 是以系統管理員身分執行,新專案在提高權限後的安全性和 Windows 安全性不一致而無法把檔案拖放進 ImageListView 內,詳見 MS 官方文件說明 - Q: Why Doesn’t Drag-and-Drop work when my Application is Running Elevated? – A: Mandatory Integrity Control and UIPI,該限制跟 ImageListView 無關,即使是 WinForm 標準控件,也會有該限制

要避免安全性不一致導致無法進行 drop,可以參考該文章內的 Code - WinForm中管理员权限下获取拖拽文件路径的解决方案

沒有留言:

張貼留言