如何解决将文件拖放到WPF中
| 我需要将图像文件拖放到WPF应用程序中。当我放入文件时,我当前有一个事件触发,但是我不知道下一步该怎么做。我如何获得图像? “ 0”对象是图像还是控件?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?
}
解决方法
这基本上就是您想要做的。
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
属性。
<StackPanel Name=\"ImagePanel\" Drop=\"ImagePanel_Drop\" AllowDrop=\"true\">
...
</StackPanel>
,图像文件包含在e
参数中,该参数是DragEventArgs
类的实例。
(“ 0”参数包含对引发事件的对象的引用。)
具体来说,请检查“ 8”位成员;如文档所述,这将返回对包含拖动事件中数据的数据对象(IDataObject
)的引用。
IDataObject
介面提供了多种方法来检索您想要的数据对象。您可能会想通过调用GetFormats
方法开始,以查明正在使用的数据的格式。 (例如,它是实际图像还是仅仅是图像文件的路径?)
然后,一旦您确定了要拖入的文件的格式,就可以调用GetData
方法的特定重载之一来实际检索特定格式的数据对象。
,另外回答A.R.请注意,如果您想使用TextBox
掉落,您必须知道以下内容。
TextBox
似乎已经对DragAndDrop
进行了一些默认处理。如果您的数据对象是String
,它就可以正常工作。其他类型不会被处理,并且您会获得“禁止鼠标”效果,并且不会调用Drop处理程序。
似乎您可以在PreviewDragOver
事件处理程序中将ѭ17enable的处理启用为true。
XAML
<TextBox AllowDrop=\"True\" x:Name=\"RtbInputFile\" HorizontalAlignment=\"Stretch\" HorizontalScrollBarVisibility=\"Visible\" VerticalScrollBarVisibility=\"Visible\" />
C#
RtbInputFile.Drop += RtbInputFile_Drop;
RtbInputFile.PreviewDragOver += RtbInputFile_PreviewDragOver;
private void RtbInputFile_PreviewDragOver(object sender,DragEventArgs e)
{
e.Handled = true;
}
private void RtbInputFile_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);
var file = files[0];
HandleFile(file);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。