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#做到这一点?

谢谢。

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

编辑:或者,请参阅此MSDN文章:

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

filter部分:

CDN_INCLUDEITEM通知消息提供了另一种筛选对话框显示的名称的方法。 若要使用此消息,请提供OFNHookProc挂接过程,并在创建对话框时在OPENFILENAME结构中指定OFN_ENABLEINCLUDENOTIFY标志。 每次用户打开文件夹时,对话框都会向新打开的文件夹中的每个项目的挂钩过程发送CDN_INCLUDEITEM通知。 钩子过程的返回值指示对话框是否应显示文件夹项目列表中的项目。

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

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

编辑#1

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

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

编辑#2

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

我希望这可以帮助你!

我知道这有效:

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

我没有测试多个选择..

尽管这是一篇很老的post,但我觉得有人会寻找一种只显示没有扩展名的文件的人。

我以为用*. 会工作,但它没有,所以它似乎是OpenFileDialog控件的限制。

您可以创建自己的对话框,但OpenFileDialog不可inheritance,因此这对于一个小function来说最终会有很多工作。

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

祝好运!