2013-02-20 9 views
3

我想在我的PicureBox es中使用DragDrop,但DragDrop()DragEnter()方法從不調用。在PictureBox中DragDrop - DragEnter永遠不會被調用

我創建了方法MouseMove,在這個方法中我叫DoDragDrop(),應該叫DragDrop()DragEnter()MouseMove被稱爲但不休息。

形態的構造:

public Form1() 
{ 
    InitializeComponent(); 
    this.AllowDrop = true; 
} 

這是建立在PictureBox構造:

this.DragDrop += new DragEventHandler(ttile_DragDrop); 
this.DragEnter += new DragEventHandler(ttile_DragEnter); 
this.MouseMove += new MouseEventHandler(ttile_MouseMove); 

而且我的方法:

public void ttile_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) 
{ 
    int i = 0; 
} 

public void ttile_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) 
{ 
    int i = 0; 
} 

public void ttile_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Left) 
    { 
     ((PictureBox)sender).DoDragDrop(sender, DragDropEffects.All); 
    } 
} 
+1

而不是'MouseMove'嘗試使用'MouseDown' – 2013-02-20 13:10:03

+0

你試圖實現什麼樣的拖動操作是完全不清楚的。你的第一個片段表明你想要放在表格上,第二個片段建議你想放在圖片框上。你似乎有兩個名爲ttile_DragEnter的方法。你發佈的是錯誤的,它沒有設置e.Effect。當然這是行不通的。 – 2013-02-20 13:49:35

+0

爲什麼你想使用拖動輸入? – Max 2013-02-20 14:59:18

回答

5

我有一個類似的問題。問題是你的表格有AllowDrop,但不是圖片。由於我忽略的原因,AllowDrop不是PictureBox的成員。

爲我工作的訣竅是由

((Control)myPictureBox).AllowDrop = True; 

其中myPictureBox是我的PictureBox實例來代替

this.AllowDrop = True; 

+0

瘋狂..這工作對我來說(感謝提示)。奇怪的是,MSDN指出PictureBox用'[BrowsableAttribute(false)]'覆蓋AllowDrop,這意味着它不會顯示在Intellisense中,它清楚地聲明「這個API支持.NET Framework基礎結構,並且不打算成爲直接從你的代碼中使用「。但是,如果沒有這種解決方法,我無法實現它! – 2014-03-09 01:38:30

相關問題