C# 在哪个控件上调用DoDragDrop方法重要吗?

C# 在哪个控件上调用DoDragDrop方法重要吗?,c#,winforms,controls,drag-and-drop,C#,Winforms,Controls,Drag And Drop,我想知道在Windows窗体应用程序中调用DoDragDrop方法的控件是否会有所不同 我有一个带有两个PictureBox控件的窗体。一个可以拖动,另一个的AllowsDrop属性设置为true 可拖动PictureBox的MouseDown事件处理程序如下所示: private void dragPictureBox_MouseDown(object sender, MouseEventArgs e) { if (sender is PictureBox)

我想知道在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);
        }
    }
但我似乎可以使用任何控件,比如表单本身,而不是在pictureBox上调用DoDragDrop

var effect = this.DoDragDrop(pictureBox.Image, DragDropEffects.All);
甚至

var effect = label1.DoDragDrop(pictureBox.Image, DragDropEffects.All);

在我调用DoDragDrop方法的控件上有什么区别吗?如果是这样的话,有什么区别呢?

没有很好的文档记录,但我相信它会影响哪个控件会引发事件


所有的例子都倾向于使用阻力数据的来源,所以我坚持使用它。

你完全正确。GiveFeedback事件也是如此。有趣的是,这两个事件都会在拖动操作期间持续发生,即使文档中指出只有在键盘或鼠标按钮状态发生更改时才会发生。