模拟文件对话框

时间:2011-10-27 01:40:34

标签: c# wpf filedialog

我需要在我的应用程序中添加一个用户可以删除文件的位置,它们就像将文件拖到Windows上的文件夹时一样。在here中有一个程序具有我需要的功能,但它是使用Windows窗体编写的,我使用的是wpf。因为它具有我需要的功能,因此porgram很棒。让我列出这些功能:

1)我可以获得与桌面相同的图标。

2)我可以拖动文件夹和文件。请注意我如何在图片

上拖动我的库文件夹

enter image description here

3)当我右键单击一个文件时,我获得了与Windows上相同的上下文菜单

enter image description here

4)我可以拖动文件和文件夹。

enter image description here

请注意,“示例文件”对话框窗口是使用Windows窗体创建的,源代码可以在我提供的第一个链接上下载。

我不想创建文件对话框,否则我将使用openFileDialog类。我需要在我的wpf应用程序上嵌入边框,用户可以在其中拖动和选择文件。他们也可以将文件拖到外面并从那里打开文件。

所以这些是我需要添加到我的wpf应用程序的4件事让我描述我为尝试解决每个方法所做的事情。

1)

我试过看了很多不同的地方来获取从文件中提取图标所需的代码,它们看起来永远不会与桌面上的图标相同。我尝试过:thisthis one also以及其他一些我现在都记不住的了。

注意这一步将是eassy我对其他功能更感兴趣

2)

这个可能是最难的一个。我没有实现这个,但我一直在想,为了实现这个功能,我将不得不有另一个窗口。该窗口将包含一个Image。每当我将鼠标拖到一个图标上时,我将实例化此窗口,将我正在绘制的图像作为参数传递,它将关闭在上级onMouseUP上。我不知道如何跟踪我让鼠标移动的窗口,所以我不确定是否应该尝试实现这种技术

3)

我不知道如何实现此功能。

4)

那个是eassy。唯一困难的部分是,有时您可能会从单独的磁盘(如拇指驱动器)拖动文件,您必须有一个方法才能复制它。或者你可以从Windows开始菜单中拖动一个链接。

也许我可以使用对话框的功能。我不需要重新发明轮子。我对Windows窗体的了解不多,所以我很难在wpf上实现该代码。

1 个答案:

答案 0 :(得分:0)

你想要的是重用Windows中的控件,从.NET中可以通过Windows API Code Pack

访问这些控件。

查看代码包的Windows Shell部分,特别是Explorer Browser控件,它应该为您提供所需的所有功能。