有没有办法知道被拖动物品的来源是什么? 即我们已将图像从chrome / firefox / etc拖到winforms应用程序中,在下降时我想知道项目的来源(可能是窗口的句柄)(chrome,ff等)。
答案 0 :(得分:1)
不按惯例。拖放操作越是无知,其设计就越好。
可以通过使用自定义格式向拖放操作添加额外的元数据(字符串等)来识别源。您可以使用IDataObject.GetFormats方法尝试“窥探”各种拖放:
private void Test_DragDrop(object sender, DragEventArgs e)
{
string[] formats = e.Data.GetFormats();
foreach (string s in formats)
{
try
{
string d = (string)e.Data.GetData(s);
MessageBox.Show(s + "\n" + d);
}
catch { }
}
}
请注意,在此示例中,我强制将所有数据转换为字符串。它通常会抛出一些异常,因为还可能附加非字符串值。例如,在谷歌浏览器中,复制字符串提供了8种不同的数据格式,其中只有5种是字符串。
如果您想启动自己的拖放操作并且能够验证您是否是源,则可以使用自定义数据格式。