我有一个 C# .NET 3.5 程序,它使用OpenFileDialog
检索要导入的文件。它有两个过滤器 (*Domain*.*
和*.*
),并且*Domain*.*
被选为FilterIndex
。当在OpenFileDialog
.
以下是用户将采取的重现问题的步骤:
- 在程序中,打开
OpenFileDialog
. 确保过滤器设置为*Domain*.*
。 - 在与过滤器匹配的目录中查找文件并更改文件名,使其不再与过滤器匹配。注意:该文件将消失。
- 更改过滤器以显示所有文件
*.*
。注意:该文件未列出,即使您应该显示*.*
.
此时,您可以在 Windows 资源管理器中打开该文件夹,并看到更改名称的文件存在。但是,在 中OpenFileDialog
,无论使用何种过滤器,它都不再可见。再次查看该文件的唯一方法是关闭OpenFileDialog
然后重新打开它。
这是我创建OpenFileDialog
.
using(OpenFileDialog domainFileDialog = new OpenFileDialog())
{
domainFileDialog.CheckFileExists = true;
domainFileDialog.CheckPathExists = true;
domainFileDialog.Filter = "Domain Files (*Domain*.*)|*Domain*.*|All files (*.*)|*.*";
domainFileDialog.FilterIndex = 1;
domainFileDialog.Multiselect = false;
domainFileDialog.RestoreDirectory = true;
domainFileDialog.ShowReadOnly = true;
domainFileDialog.SupportMultiDottedExtensions = true;
domainFileDialog.Title = "Choose the Domain File to Import...";
domainFileDialog.ValidateNames = true;
\\ Perform Import functionality...
}
似乎当您打开OpenFileDialog
并修改与限制性更强的过滤器匹配的现有文件以使其不再匹配过滤器时,即使*.*
显示所有文件,该文件也会从可见性中消失。
由于我不知道为什么会发生这种情况,(并且我愿意就如何修复它提出建议)有没有办法限制用户创建或修改任何文件以OpenFileDialog
希望防止这个问题?