我有一个 C# .NET 3.5 程序,它使用OpenFileDialog
检索要导入的文件。它有两个过滤器(*Domain*.*
and *.*
)和*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
希望防止这个问题?
首先,我建议您考虑是否值得关心用户可能这样做。如果 FOD 这样做,每个 Windows 应用程序都有这个功能,但你不会听到用户抱怨它。那么这真的是一个需要解决的问题吗?
如果问题与过滤器不仅仅涉及文件扩展名有关,我不会感到惊讶 - 这样做是相当不传统的。也许仅尝试使用扩展程序,看看这是否是原因。
您是否尝试过按 F5 刷新其缓存数据?我不知道这是否会像在资源管理器窗口中那样在 FOD 中起作用,但尝试一下可能会很有趣。
话虽如此,过滤按键(F2)和鼠标点击(右键)是微不足道的(您可以从中派生出一些形式,或者您可以添加一个MessageFilter
),使用户无法访问任何允许他们重命名 FOD 中文件的 UI。如果你以这种方式破坏了 FOD,作为一个用户,我会很生气——无论如何,这比在极少数情况下“消失”的重命名文件要严重得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)