WinForm 控件拖拽筆記
阿新 • • 發佈:2019-04-12
sci 方便 event and init rcu 文本 分享 事件
目前項目中,有個需求,需要將ListViewItem 項拖到一個 UserControl 中,方便在UserControl 中綁定 ListViewItem 內容。
現在問題是當拖拽經過 UserControl 內部 RichTextbox 時,會觸發 UserControl 的 DragLeave 事件 中斷拖拽,導致數據只能在非文本框區域才能拖拽成功。
現在解決思路時,在文本框中也設置拖拽功能,當鼠標經過 RichTextbox 時,綁定 DragEnter , DragDrop , 這兩個事件實現與 UserControl 拖拽事件 DragEnter , DragDrop 一致。
UserControl 如圖:
部份代碼:
public EventHandler<DragEventArgs> OnDragEnterCuesom; public EventHandler<DragEventArgs> OnDragDropCuesom; public UserControlHex() { InitializeComponent(); txtAsciiSelectContent.AllowDrop = true; txtDetailHex.AllowDrop = true; txtAsciiSelectContent.DragEnter += TxtAsciiSelectContent_DragEnter; txtAsciiSelectContent.DragDrop += TxtAsciiSelectContent_DragDrop; txtDetailHex.DragEnter += TxtAsciiSelectContent_DragEnter; txtDetailHex.DragDrop+= TxtAsciiSelectContent_DragDrop; } private void TxtAsciiSelectContent_DragDrop(object sender, DragEventArgs e) { if (OnDragDropCuesom != null) { OnDragDropCuesom(sender, e); } } private void TxtAsciiSelectContent_DragEnter(object sender, DragEventArgs e) { if (OnDragEnterCuesom != null) { OnDragEnterCuesom(sender, e); } }
註意: 文本框與UserControl 拖拽事件執行綁定同一代碼塊。
userControlHex2.OnDragDropCuesom += userControlHex2_DragDrop;
userControlHex2.OnDragEnterCuesom += userControlHex2_DragEnter;
WinForm 控件拖拽筆記