拖放WinForm UserControl对象

时间:2016-03-16 09:57:34

标签: c# winforms user-controls draggable

我正在尝试修改我创建的UserControl。 这是UserControl:

enter image description here

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

根据this article,我没有能力将可拖动的UserControl作为参数传递给DoDragDrop函数。

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

        string dataString = "";

        dataString += barcodeLabel.Text + "~";

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

        dataString += sImg64bit;

        DoDragDrop(dataString, DragDropEffects.Copy);   

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

1 个答案:

答案 0 :(得分:0)

感谢@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