如上述兩圖,左側為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的行拖拽
- 使用一個老外的Blog上的方法,點擊這里
- DataGridView 與 DataGrid之間的拖拽
- 由於在WPF的DataGrid的DragEnter方法里,使用如下代碼會報COM異常
-
1 DataGridViewRow curRow = (DataGridViewRow)e.Data.GetData(typeof(DataGridViewRow));
-
string strRow = (string)e.Data.GetData(DataFormats.StringFormat);
Animal aimAnimal = (Animal)DataSerializer.DeserializeObject(strRow);
- TipControl & Popup
- 在WinForm中使用了一個TipControl的UserControl顯示拖拽過程中的行信息
- 在WPF中使用Popup顯示當前行信息
- 按住Ctrl鍵再拖拽行,則實現數據行賦值功能。
- 存在的問題:還存在一些BUG和不足,個人學習,僅供參考。