拖放 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
我正在尝试 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