如何解决C# OpenFileDialog 多个文件名过滤器,包括排除
OpenFileDialog ofg = new OpenFileDialog
{
FileName = "BaseFileName*",Filter = "CSV File (*.CSV)|*.csv",Multiselect = false,InitialDirectory = @"N:\Downloads"
};
但是,该进程在文件名中添加了 _Processed 后缀和时间戳数据,我想在下次使用 OpenFileDialog 时排除这些重命名的文件,以防止用户尝试重新处理同一文件。
出于内部审计的原因,我必须将原始文件留在原处。
所以我需要一个不等于“_Processed”的附加文件名过滤器。
有没有办法用 OpenFileDialog 做到这一点,或者有人知道可以做到这一点的自定义 c#/.net 组件吗?
解决方法
您要求从文件对话框视图中省略特定项目。
根据 MSDN,这在 Windows 7 中不再可能,但以前是可能的。
C# 文件对话框(WPF 和 WinForms)使用 IFileDialog
API。
这是本可以完成这项工作但不再受支持的功能:
事实上,在用户选择文件并点击 OK 确认后,您不得不检查文件的正确性。
您可以对这种情况有所帮助:如果您喜欢痛苦,那么您可以从 .NET 源代码中复制整个 IFileDialog
COM 互操作代码,并实现 IFileDialogEvents
。这样,当用户单击“确定”时,您可以拒绝选择并在对话框关闭之前显示错误,让对话框保持打开状态,以便用户可以选择不同的文件。
如果您心智健全并且不想这样做,那么您必须在验证失败后再次打开对话框。
,简单的方法就是使用另一个扩展名保存处理过的数据,例如“BaseFileName_Processed_20105640640.cvs1”,这样您就可以保留数据并且您的文件对话框不会显示此文件。
另一种方法是在 if 语句中调用 OpenFileDialog()(并将返回值与 DialogResult.OK 进行比较),然后将文件名拆分为 {'_','.'},然后运行一个循环来计数单词 Processed(>0) 的出现,并且可能作为安全检查来确定时间戳是否存在于拆分字符串之一中。最后,在选择错误的文件时重新加载在同一个文件夹中的文件率。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。