首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# OpenFileDialog多文件名筛选器(包括排除)

C# OpenFileDialog多文件名筛选器(包括排除)
EN

Stack Overflow用户
提问于 2021-01-28 15:35:03
回答 2查看 197关注 0票数 0

我有一个要求允许用户打开一个特定的文件进行处理。打开的文件对话框当前

代码语言:javascript
运行
复制
        OpenFileDialog ofg = new OpenFileDialog
        {
            FileName = "BaseFileName*",
            Filter = "CSV File (*.CSV)|*.csv",
            Multiselect = false,
            InitialDirectory = @"N:\Downloads"
        }; 

但是,该进程向文件名添加了一个_Processed后缀以及时间戳数据,我希望在下次使用OpenFileDialog防止用户试图重新处理同一个文件时排除这些重命名的文件。

由于内部审计的原因,我不得不把原始文件留在那里。

因此,我需要一个不等于"_Processed“的额外文件名过滤器。

是否有任何方法可以使用OpenFileDialog完成此操作,或者是否有人知道可以这样做的自定义c#/.net组件?

EN

回答 2

Stack Overflow用户

发布于 2021-01-28 16:06:13

您要求从“文件”对话框视图中省略特定项。

根据MSDN,这在Windows 7中不再是可能的,但以前是可能的。

C#文件对话框(包括WPF和WinForms)使用IFileDialog API。

以下是可以使此功能工作的函数,但不再支持该功能:

https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifiledialog-setfilter

实际上,在用户已经选择了该文件并使用OK进行确认之后,您将不得不检查该文件的正确性。

您可以对这种情况有所帮助:如果您喜欢痛苦,那么您可以从IFileDialog源代码中复制整个.NET COM互操作代码,并实现IFileDialogEvents。这样,当用户单击"OK“时,您可以在对话框关闭之前拒绝选择并显示一个错误,让对话框打开,以便用户可以选择另一个文件。

如果您是理智的,并且您不想这样做,那么您将不得不在验证失败后再次打开对话框。

票数 2
EN

Stack Overflow用户

发布于 2021-01-28 22:15:31

简单的方法就是用另一个扩展保存处理过的数据。以"BaseFileName_Processed_20105640640.cvs1",方式保存数据,您的文件对话框将不会显示该文件。

另一种方法可以是在if语句中调用OpenFileDialog() (并比较返回到DialogResult.OK),然后拆分{'_','.'}的文件名,然后运行一个循环来计数所处理的单词( >0)的出现情况,并可能作为安全检查来确定其中一个拆分字符串中是否存在时间戳。最后,当选择错误的文件时,在同一个文件夹中重新加载FileOpenDialog。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65940292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档