PictureBox中的DragDrop - 永远不会调用DragEnter

时间:2013-02-20 12:54:23

标签: c# winforms drag-and-drop picturebox mousemove

我希望在DragDrop es中使用PicureBox,但永远不会调用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);
   }
} 

2 个答案:

答案 0 :(得分:6)

我有类似的问题。问题是表单有AllowDrop,但图片没有。由于我忽略的原因,AllowDrop不是PictureBox的成员。

对我有用的技巧是替换

this.AllowDrop = True;

通过

((Control)myPictureBox).AllowDrop = True;

其中myPictureBoxPictureBox的实例。

答案 1 :(得分:0)

myPictureBox.AllowDrop = true;

尽管在myPictureBox的方法列表中看不到“ AllowDrop”,您仍可以使用此代码。