调用 DoDragDrop 方法的控件是不是重要?
Posted
技术标签:
【中文标题】调用 DoDragDrop 方法的控件是不是重要?【英文标题】:Does it matter on which control you call the DoDragDrop method?调用 DoDragDrop 方法的控件是否重要? 【发布时间】:2011-05-25 20:10:42 【问题描述】:我想知道在 Windows 窗体应用程序中调用 DoDragDrop 方法的控件是否会有所不同。
我有一个带有两个 PictureBox 控件的表单。一个可以拖动,另一个的 AllowsDrop 属性设置为 true。
可拖动 PictureBox 的 MouseDown 事件处理程序如下:
private void dragPictureBox_MouseDown(object sender, MouseEventArgs e)
if (sender is PictureBox)
var pictureBox = (PictureBox) sender;
var effect = pictureBox.DoDragDrop(
pictureBox.Image, DragDropEffects.All);
MessageBox.Show("Drag ended in a " + effect);
但我似乎可以使用任何控件,而不是在图片框上调用 DoDragDrop,例如表单本身
var effect = this.DoDragDrop(pictureBox.Image, DragDropEffects.All);
甚至
var effect = label1.DoDragDrop(pictureBox.Image, DragDropEffects.All);
调用 DoDragDrop 方法对哪个控件有影响吗?如果有,有什么区别?
【问题讨论】:
【参考方案1】:它没有很好的记录,但我相信它会影响哪个控件会引发QueryContinueDrag 事件。
所有示例都倾向于使用拖动数据的来源,所以我会坚持使用它。
【讨论】:
你是绝对正确的。 GiveFeedback 事件也是如此。有趣的是,这两个事件在拖动操作期间不断发生,尽管文档指出它仅在键盘或鼠标按钮状态发生变化时发生。以上是关于调用 DoDragDrop 方法的控件是不是重要?的主要内容,如果未能解决你的问题,请参考以下文章