在Control 類中有virtual函數 public virtual OnDragOver(DragEventArgs e) 方法, 開發人員可以重載這個函數實現拖動過程中大部分功能,我們可以設置參數e.Effect,來決定很多行爲,但是有的時候需求經常改變,比如用戶可能要求在不同的條件下,光標顯示是不同的,比如同樣是e.Effect==DragDropEffects.None, 可能drag over到不同的控件下要顯示的光標不一樣,那怎樣在DragOver的過程中改變光標的顯示呢?同樣在Control類下有函數virtual void OnGiveFeedback(GiveFeedbackEventArgsgfbevent); 通過重載這個函數可以實現該功能,具體過程如下:
在要執行DoDragDrop的對象對應的類裏承載
1. 在要執行DoDragDrop的對象對應的類裏承載OnGiveFeedback(GiveFeedbackEventArgs gfbevent);
2. 在OnGiveFeedback(GiveFeedbackEventArgs gfbevent) 函數裏面添加代碼更換光標,例如
private void OnGiveFeedback(GiveFeedbackEventArgs e){ e.UseDefaultCursors = false; Cursor.Current = MyCursor;}
還有類似方法Control類的 event GiveFeedback 等等。