2011-05-30 34 views
2

當我們將應用程序拖入應用程序時,我們需要向用戶顯示反饋。 我們的客戶喜歡這種反饋是以自定義光標的形式。處理拖動(從DragOver事件)時是否可以更改鼠標指針?

使用在GiveFeedback事件處理程序中設置的自定義光標(在將項目拖出我們的應用程序時產生DoDragDrop),已經實現了拖出操作。 GiveFeedbackEventArgs允許我們指定UseDefaultCursors屬性 - 將其設置爲false允許我們覆蓋光標。

但是,DragOver事件處理函數參數(與GiveFeedback等效)沒有UseDefaultCursors屬性,並且從那裏更改光標沒有任何影響。

樣品(這有沒有影響):

private void browser_DragOver(object sender, DragEventArgs e) { 
    Cursor.Current = Cursors.WaitCursor; 
} 

拖動操作,從我們的應用程序之外的起源。 (應用內拖,它的工作原理使用GiveFeedback事件。

如何接收阻力,當?改變光標這甚至可能/可行嗎?

回答

2

是的,你必須實現一個COM接口(IDragSourceHelper和IDropTargetHelper)。 看一看HERE

1

這是否足夠?
此代碼將改變。通過增加旁邊有一個[+]號鼠標指針

private void Form_DragOver(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Copy; 
} 
+1

不,要求是使用自定義光標(不同的圖形) – Marek 2011-05-31 14:27:59

+0

好吧,不,不,那確實是一個棘手的問題。聽到你可能會發現的東西會很有趣。祝你好運! – 2011-06-03 06:52:49

2
void Form1_GiveFeedback(object sender, GiveFeedbackEventArgs e) { 
    e.UseDefaultCursors = false; 
} 
+0

歡迎來到SO,在這裏,解釋爲什麼要使用你的解決方案而不僅僅是如何是一個好習慣。這會讓你的答案更有價值,並有助於讀者更好地理解你是如何做到的。我還建議你看看我們的FAQ:http://stackoverflow.com/faq。 – ForceMagic 2012-10-26 05:26:06

+0

請點擊這裏http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.givefeedback(v=vs.110).aspx – 2013-12-06 22:11:44