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来说最终会有很多工作。
文件是否没有由您自己的应用程序创建的扩展名? 如果是这种情况,您可以为其过滤提供自定义扩展。 如果不是,那么我恐怕我想不出别的什么来帮助你:(
祝好运!