将文件拖放到WPF中。

11 浏览
0 Comments

将文件拖放到WPF中。

我需要将一张图片文件拖入我的WPF应用程序中。我目前已经在拖放文件时触发了一个事件,但我不知道下一步该怎么做。我该如何获取图片?sender对象是图片还是控件?

private void ImagePanel_Drop(object sender, DragEventArgs e)
{
    //what next, dont know how to get the image object, can I get the file path here?
}

admin 更改状态以发布 2023年5月22日
0
0 Comments

图像文件包含在e参数中,该参数是DragEventArgs类的一个实例。
(sender参数包含引发事件的对象的引用。)

具体来说,检查e.Data成员;正如文档所解释的那样,它返回一个数据对象(IDataObject) 的引用,该数据对象包含拖动事件的数据。

IDataObject接口提供了一些方法来检索所需的数据对象。你可能想从调用GetFormats方法开始,以便找出正在使用的数据的格式。(例如,它是实际图像,还是只是图像文件的路径?)

然后,一旦你已经鉴定出被拖入的文件的格式,你将调用GetData方法的特定重载之一,以实际检索特定格式的数据对象。

0
0 Comments

这基本上就是你想要做的。

private void ImagePanel_Drop(object sender, DragEventArgs e)
{
  if (e.Data.GetDataPresent(DataFormats.FileDrop))
  {
    // Note that you can have more than one file.
    string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
    // Assuming you have one file that you care about, pass it off to whatever
    // handling code you have defined.
    HandleFileOpen(files[0]);
  }
}

此外,不要忘记在XAML中实际连接事件,以及设置AllowDrop属性。


    ...

0