WinForm DataGridView & WPF DataGrid 的拖拽(Drag & Drop)


Download Source - 117KB

        如上述兩圖,左側為WinForm的DataGridView,右側為WPF的DataGrid(封裝成了自定義控件DragDataGrid,通過WPF的ElementHost裝載在WinForm中)。均可以通過左鍵拽取行進行拖拽排序。另外實現了從WinForm的DataGridView向WPF的DataGrid的拖拽,因此,兩個DataGridView之間的拖拽和兩個DataGrid的拖拽方法類似。以上控件均關閉了Sort功能,並將AllowDrop屬性置為true.

  • WinForm DataGridView的行拖拽
    • 使用Drag & Drop系列方法通過e.Data.GetData()來傳遞拽取的行數據,TipPanel的移動顯示在MouseMove中控制
  • WPF DataGrid的行拖拽
  • DataGridView 與 DataGrid之間的拖拽
    • 由於在WPF的DataGrid的DragEnter方法里,使用如下代碼會報COM異常
    • 1 DataGridViewRow curRow = (DataGridViewRow)e.Data.GetData(typeof(DataGridViewRow));
      所以封裝了一個數據序列化類DataSerializer將當前DataGridView 拖拽行的DataBoundItem序列化為string類型,在WPF中使用如下代碼獲取string后再反序列化為實例對象。
    • string strRow = (string)e.Data.GetData(DataFormats.StringFormat);
      Animal aimAnimal = (Animal)DataSerializer.DeserializeObject(strRow);
  • TipControl & Popup
    • 在WinForm中使用了一個TipControl的UserControl顯示拖拽過程中的行信息
    • 在WPF中使用Popup顯示當前行信息
  • 按住Ctrl鍵再拖拽行,則實現數據行賦值功能。
  • 存在的問題:還存在一些BUG和不足,個人學習,僅供參考。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM