2013-07-21 46 views
0

我是C#中處理拖放事件的新手,並且遇到了一個問題。使用AllowDrop = true來響應丟棄項目控制

我有一個包含按鈕和麪板的窗體的WinForms項目。 我設置面板AllowDrop屬性爲true,並添加DragDrop事件處理程序:

panel1.DragDrop += new DragEventHandler(panel1_DragDrop); 

對於一個按鈕,我添加了一個MouseDown事件處理程序初始化DragDropEffects:

void btn1_MouseDown(object sender, MouseEventArgs e) 
    { 
     (sender as Button).BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; 
     DragDropEffects dde1 = DoDragDrop((sender as Button), DragDropEffects.All); 
    } 

我沒有由Panel引發的DragDrop事件問題;

我的問題是如何處理用戶將項目放置在AllowDrop屬性設置爲true的區域之外的事件? 假設我想將按鈕BorderStyle設置回FixedSingle,當用戶在執行拖動操作時在我的面板外釋放鼠標按鈕 - 我應該處理什麼事件?

回答

1

處理面板的DragLeave event

+0

DragLeave事件不完全是我正在尋找的 - 我正在尋找類似於DragDrop事件的事件,但是不允許Dropping的區域。我可以處理DragLeave事件,但它會觸發,儘管用戶仍在繼續拖動。 –

+2

@MikhailTregubov:在這種情況下DoDragDrop()不返回'None'嗎?請注意'DoDragDrop()'是一個阻塞調用,它運行消息循環。 – SLaks

+0

是的,謝謝,這就是我一直在尋找的東西。 –

相關問題