2013-02-20 12 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

相关问题