gpt4 book ai didi

c# - 如何在C#中的OpenFileDialog中限制文件名修改

转载 作者:行者123 更新时间:2023-11-30 17:56:50 27 4
gpt4 key购买 nike

我有一个 C# .NET 3.5 程序,它使用 OpenFileDialog 来检索要导入的文件。它有两个过滤器(*Domain*.**.*),*Domain*.* 被选为 过滤器索引。当在 OpenFileDialog 中修改文件时,我看到文件从过滤器中消失的情况。

以下是用户重现问题的步骤:

  1. 在程序中,打开OpenFileDialog。确保过滤器设置为 *Domain*.*
  2. 在目录中找到与过滤器匹配的文件并更改文件名,使其不再与过滤器匹配。 注意:文件将消失。
  3. 更改过滤器以显示所有文件 *.*注意:即使您应该显示 *.*,文件也没有列出。

此时,您可以在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,我会很生气 - 无论如何,重命名的文件在极少数情况下会“消失”。

关于c# - 如何在C#中的OpenFileDialog中限制文件名修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13772222/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com