C# 如何使用.NET在windows窗体中显示windows文件夹内容?

C# 如何使用.NET在windows窗体中显示windows文件夹内容?,c#,.net,C#,.net,我想在我的windows窗体中显示文件夹内容,用户可以从中复制粘贴用户需要的文件,为此我必须使用什么类型的容器?基本上您有两个选项。你可以得到一个已经构建好的控件,并在你的应用程序中使用它,虽然有很多,但不是很好,你必须为此付费 或者,您可以使用TreeView/ListView构建自己的控件,使其最适合您的需要。解释并与源代码 之前,我使用Ultra win tree(infrajestics控件)查看树视图中的所有文件。另一种选择是,您可以获得包含实际explorer shell控件的托管包

我想在我的windows窗体中显示文件夹内容,用户可以从中复制粘贴用户需要的文件,为此我必须使用什么类型的容器?

基本上您有两个选项。你可以得到一个已经构建好的控件,并在你的应用程序中使用它,虽然有很多,但不是很好,你必须为此付费


或者,您可以使用TreeView/ListView构建自己的控件,使其最适合您的需要。解释并与源代码

之前,我使用Ultra win tree(infrajestics控件)查看树视图中的所有文件。

另一种选择是,您可以获得包含实际explorer shell控件的托管包装器,它基本上允许您将explorer直接嵌入到应用程序中

考虑使用中的FolderView和FileView控件。

假设:

  • 设计要求禁止显示最终用户可以复制或粘贴的文件的实际位置。假设显示的所有文件名都已从路径位置删除

  • 文件列表为“平面”(不需要树状视图类型显示)

  • 需要将一个或多个文件从原始“完整”列表移动或复制到另一个“部分列表”

  • 我将在一个面板中创建一个包含两个ListView的界面:每个ListView有一列,宽度足以显示文件名:允许在两个ListView中进行多重选择

    我要么使用标准技术实现拖放,要么更可能创建一组带有箭头的按钮,在列表视图之间来回移动项目。我可能会为每个ListView设置单独的删除按钮,并要求最终用户根据应用程序确认删除

    如果允许“多个副本”(具有相同内容的多个列表条目),我可能会使用一些键盘选项来控制这一点,尤其是在拖放时


    根据应用程序的不同,我会考虑让最终用户对两个ListView的当前状态进行“快照”,然后可以“还原”:而一个简单的“取消”按钮可以处理您希望重置整个内容的情况。

    复制粘贴到的文件是什么?您是否只将文件名复制到某个容器中(如文本框),或者您是否实际打开文件并对其内容进行处理(如显示.jpg文件)?请再详细一点。我有一个指定的文件夹,我想向用户显示它的内容,并允许用户复制或粘贴其中的项目,但出于某些安全原因,我不想显示该文件夹的位置或名称,只是一个浏览器,用户可以在其中获取或提供项目,而不能执行任何其他操作,还有一件事,用户甚至无法访问指定文件夹的根目录。我的意思是不需要树视图。好吧,这种情况排除了OpenFileDialog的使用。当你说“粘贴”时,你是在暗示用户可以在你的应用程序之外的某个地方选择一个文件,然后把它拖进去吗?或者用户是否完全“锁定”为仅使用应用程序中公开的内容?如果您不需要TreeView,我们是否可以假设向最终用户显示的所有要复制/粘贴的文件都处于同一级别?或者,如果它们在某些文件层次结构中处于不同的级别,您不希望用户看到:我们可以假设您已将它们“展平”到一个列表中吗?