OpenFileDialog - 仅显示没有扩展名的文件名

时间:2010-05-18 01:00:36

标签: c# filter wildcard openfiledialog

我的C#程序中有以下代码:

        OpenFileDialog fDialog = new OpenFileDialog();
        fDialog.Title = "Open a file";
        fDialog.Filter =
           "NCF files (*.ncf)|*.ncf|All files (*.*)|*.*|No Extensions (*.)|*.";



我希望能够让用户选择以下内容:

* .NCF (仅限.NCF扩展名的文件)
**。* (所有文件)

以及无扩展名的文件,例如:

filewithnoextension



我知道***。*会这样做,但它也会在同一目录中显示.NCF,.TXT和所有其他文件。

我只想显示没有扩展名的文件名。



用*过滤。没有办法。使用DOS窗口( dir *。)进行此操作时效果很好,但C#似乎忽略了*。过滤





有没有办法用C#做到这一点?

感谢。

4 个答案:

答案 0 :(得分:2)

自述文件通常具有扩展名。我想你做了,但你检查了这个文件夹选项,看看已知文件类型的扩展名吗?它改变了什么吗?

编辑#1

坦率地说,我怀疑你是否能够制作没有扩展名的OpenFileDialog显示文件,因为Filter属性是基于扩展名。

也许您可以使用System.IO命名空间对象(例如DirectoryInfo)继承您自己实现的OpenFileDialog,这将允许您使用Getfiles()方法获取浏览的文件夹文件,然后通过LINQ过滤自己,只显示FileInfo.Extension属性没有扩展名的文件。

编辑#2

由于OpenFileDialog是sealed,您可以将它用作嵌套类型,并使用此嵌套类型实现您自己的方法。

我希望这可以帮到你!

答案 1 :(得分:1)

我知道这有效:

fDialog.Filter = "No extension Files|" + null;

我没有通过多项选择进行测试..

Altough这是一篇很老的帖子,我觉得有人会寻找一种只展示没有扩展名的文件的人。

答案 2 :(得分:0)

我认为使用*.会起作用,但事实并非如此,所以它似乎是OpenFileDialog控件的限制。

您可以创建自己的对话框,但OpenFileDialog不可继承,因此这只会为一个小功能做很多工作。

您自己的应用程序是否创建了没有扩展名的文件?如果是这种情况,您可以为其过滤提供自定义扩展。如果不是,那么恐怕我无法想到任何其他事情来帮助你:(

祝你好运!

答案 3 :(得分:0)

如果其他软件程序在同一位置创建这些文件,为什么不让你的代码为该文件夹中的每个无扩展名文件添加扩展名(如“.XXX”一样无害),然后 显示对话框?

修改或者,请参阅此MSDN文章:

http://msdn.microsoft.com/en-us/library/ms646960(VS.85).aspx

来自过滤器部分:

  

CDN_INCLUDEITEM通知   消息提供了另一种过滤方式   对话框的名称   显示器。要使用此消息,请提供   一个OFNHookProc钩子程序和   指定OFN_ENABLEINCLUDENOTIFY   OPENFILENAME结构中的标志   在创建对话框时。每   用户打开文件夹的时间   对话框发送CDN_INCLUDEITEM   通知你的钩子程序   对于新开的每个项目   夹。钩子的返回值   程序指示是否对话框   框应显示该项目   文件夹的项目列表。

Explorer-Style Hook Procedures 部分的底部,文章解释了如何执行此操作。基本上,您将事件处理程序传递给OpenFile对话框,每次用户导航到新文件夹时,对话框都会遍历文件夹中的所有文件,并为每个文件调用事件处理程序。在事件处理程序中,您可以放置​​代码以确定文件是否具有扩展名,并相应地返回true或false。