Duilib庫List列表鼠標拖動框選和Ctrl+Shift多選

Duilib列表支持鼠標拖動框選和Ctrl+Shift多選

Duilib List拓展

Duilib_Ultimate裏面已經支持了Ctrl按鍵實現了鼠標多選和Ctrl+A列表全選功能,現在開發很多朋友有提出了需要Shift多選和鼠標拖動框選,下面把實現的原理簡單說一下。

Shift多選

目前List裏面的接口已經支持對多選操作Api,Shift多選實現就很簡單了,在SelectMultiItem函數裏面,根據鼠標起始位置的序號和結束位置的序號,然後遍歷把選擇序號添加到選中數組即可。

鼠標拖動框選

  1. 在List增加三個接口:DragBegin,Draging,DragEnd,分別對應拖動開始、拖動、拖動結束;
  2. 在ListElement的DoEvent裏面調用上面三個接口,LBUTTONDOWN調用DragBegin,MOUSEMOVE調用Draging,LBUTTONUP調用DragEnd;
  3. 在DragBegin裏面要記錄鼠標按下的位置,在Draging裏面記錄鼠標實時的位置,用於更新顯示框選橡皮筋控件。在更新選擇框的同時,計算選擇列表項的起始和結束序號,都是連續的好計算,和上面Shift一樣,更新列表項選擇數組即可。在DragEnd裏面取消選擇框的顯示,清空用於記錄位置的各種變量;

效果如下

圖片: 在這裏插入圖片描述

完整代碼請聯繫Troy(QQ:656067418)

duilib開源項目交流圈(QQ羣:261851826、261675375)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章