PictureBox 中的 DragDrop - DragEnter 永远不会被调用
Posted
技术标签:
【中文标题】PictureBox 中的 DragDrop - DragEnter 永远不会被调用【英文标题】:DragDrop in PictureBox - DragEnter never gets called 【发布时间】:2013-02-05 11:37:44 【问题描述】:我想在我的PicureBox
es 中使用DragDrop
,但永远不会调用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);
【问题讨论】:
而不是MouseMove
尝试使用MouseDown
完全不清楚您要实现什么样的拖动操作。您的第一个 sn-p 建议您要放在表格上,第二个建议您要放在图片框上。您似乎有 两个 名为 ttile_DragEnter 的方法。您发布的那个是错误的,它没有设置e.Effect。这肯定行不通。
为什么要使用 Drag enter?
@Mobstaa 我只是将一个图像从 PictureBox 拖到另一个 PictureBox。
【参考方案1】:
我遇到了类似的问题。问题是您的表格有AllowDrop
,但没有图片。出于我忽略的原因,AllowDrop
不是PictureBox
的成员。
对我有用的技巧是替换
this.AllowDrop = True;
通过
((Control)myPictureBox).AllowDrop = True;
其中myPictureBox
是我的PictureBox
实例。
【讨论】:
Crazy.. 这对我有用(感谢您的提示)。奇怪的是,MSDN 声明 PictureBox 用[BrowsableAttribute(false)]
覆盖 AllowDrop,这意味着它不会出现在 Intellisense 中,并且它明确指出“此 API 支持 .NET Framework 基础结构,不打算直接从您的代码中使用."。但是,如果没有这种解决方法,我无法让它工作!
即使没有类型转换也可以工作:myPictureBox.AllowDrop = true;
【参考方案2】:
myPictureBox.AllowDrop = true;
尽管在 myPictureBox 的方法列表中看不到“AllowDrop”,但您可以使用此代码。
【讨论】:
以上是关于PictureBox 中的 DragDrop - DragEnter 永远不会被调用的主要内容,如果未能解决你的问题,请参考以下文章