拖放 WinForm UserControl 对象

Drag&Drop WinForm UserControl object

我正在尝试 d&d 我创建的 UserControl。 这是用户控件:

比如我在FlowLayotPanel里有两个这样的UserControls。当我将一个 UserControl 拖到另一个时,我想合并 UserControl 数据。合并他们的标签和图像。

根据 this article,我无法将可拖动的 UserControl 作为参数传递给 DoDragDrop 函数。

我现在正在做的事情是这样的:

        string dataString = "";

        dataString += barcodeLabel.Text + "~";

        string sImg64bit = ImageToBase64(scannedDocImg, ImageFormat.Bmp);

        dataString += sImg64bit;

        DoDragDrop(dataString, DragDropEffects.Copy);   

我只是以字符串格式传递数据。我不认为这是个好主意? 还有其他方法可以传递可拖动数据吗?有什么想法吗?

感谢@HansPassant,我意识到答案就在我眼皮底下

这是我所做的:

  private void ScannedDocContainer_MouseDown(object sender, MouseEventArgs e)
  {
     DoDragDrop((ScannedDocContainer)sender, DragDropEffects.Copy);    
  }

  private void ScannedDocContainer_DragDrop(object sender, DragEventArgs e)
  {
     if (e.Data.GetDataPresent(typeof(ScannedDocContainer)))
     {
        ScannedDocContainer docContainerDragged = (ScannedDocContainer)e.Data.GetData(typeof(ScannedDocContainer));
        ...
        "Extract the required data here"
        ...
     }
  }

这样我就得到了整个拖动的 UserControl