为什么我们确实需要处理放置目标的DragEnter事件?
它在目的地的影响是什么?
public partial class ToolBoxForm : System.Windows.Forms.Form
{
public ToolBoxForm()
{
InitializeComponent();
}
private void lbl_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
Label lbl = (Label)sender;
lbl.DoDragDrop(lbl.Image, DragDropEffects.Link);
}
}
public partial class DrawingArea : Form
{
public DrawingArea()
{
InitializeComponent();
}
private void DrawingArea_Load(object sender, System.EventArgs e)
{
ToolBoxForm toolBoxForm = new ToolBoxForm();
this.AddOwnedForm(toolBoxForm);
toolBoxForm.Show();
pictureBox1.AllowDrop = true;
}
private void picDrawingArea_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Bitmap))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void picDrawingArea_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
Graphics g = pictureBox1.CreateGraphics();
g.DrawImage((Image)e.Data.GetData(DataFormats.Bitmap), new Point(e.X - this.Left - 12, e.Y - this.Top - 30));
}
}
当我评论代码时:
if (e.Data.GetDataPresent(DataFormats.Bitmap))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
图像未被删除。
答案 0 :(得分:3)
<强>会员
姓名
说明
无
放置目标不接受数据。
复制
来自拖动源的数据将复制到放置目标。
移动
来自拖动源的数据将移至放置目标。
链接
来自拖动源的数据会链接到放置目标。
滚动
可以在拖动时滚动目标,以找到目标中当前不可见的放置位置。
全部
复制,移动和滚动效果的组合。
如果你想接受掉落,你必须设置None
以外的东西。
然而,下一篇引言让我相信它只是用于反馈:
您可以使用 DragDropEffects 显示不同的鼠标指针以进行拖放操作。例如,您可以为复制拖放操作显示加号,为移动拖放操作或红色圆圈显示箭头符号用一行代码表示无拖放操作。
答案 1 :(得分:1)
我真的认为如果DragDropEvents保留为None(这是默认值),Drop事件将不会触发。这就是为什么图像不会掉落。