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,當用戶在執行拖動操作時在我的面板外釋放鼠標按鈕 - 我應該處理什麼事件?
DragLeave事件不完全是我正在尋找的 - 我正在尋找類似於DragDrop事件的事件,但是不允許Dropping的區域。我可以處理DragLeave事件,但它會觸發,儘管用戶仍在繼續拖動。 –
@MikhailTregubov:在這種情況下DoDragDrop()不返回'None'嗎?請注意'DoDragDrop()'是一個阻塞調用,它運行消息循環。 – SLaks
是的,謝謝,這就是我一直在尋找的東西。 –