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

Jac*_*zyk 4 c# drag-and-drop picturebox mousemove winforms

我想用DragDropPicureBox上课,但DragDrop()DragEnter()方法不会被调用.

我创建了方法MouseMove,在这个方法中我调用了DoDragDrop()哪个应该调用DragDrop()DragEnter().MouseMove被召唤但不休息.

表单构造函数:

public Form1()
{
   InitializeComponent();
   this.AllowDrop = true;
}  
Run Code Online (Sandbox Code Playgroud)

这是在构造函数中创建的PictureBox:

this.DragDrop += new DragEventHandler(ttile_DragDrop);
this.DragEnter += new DragEventHandler(ttile_DragEnter);
this.MouseMove += new MouseEventHandler(ttile_MouseMove);
Run Code Online (Sandbox Code Playgroud)

我的方法:

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);
   }
} 
Run Code Online (Sandbox Code Playgroud)

小智 6

我有类似的问题.问题是你有AllowDrop表格,但不是图片.我忽略了一个原因,AllowDrop不是其中的一员PictureBox.

对我有用的诀窍是取代

this.AllowDrop = True;
Run Code Online (Sandbox Code Playgroud)

通过

((Control)myPictureBox).AllowDrop = True;
Run Code Online (Sandbox Code Playgroud)

myPictureBox我的实例在哪里PictureBox.