【问题标题】:OpenFileDialog does not allow '/' character even after disabling validation即使禁用验证,OpenFileDialog 也不允许使用“/”字符
【发布时间】:2016-08-17 22:58:58
【问题描述】:

类似问题:How to avoid of file name validation in SaveFileDialog C#

我正在编写一个应用程序,该应用程序可以选择支持打开可执行文件并使用给定参数运行它们,并且我正在尝试使用OpenFileDialog 作为一种用户友好的方式来实现这一点。在禁用AddExtensionValidateNamesCheckFileExistsCheckPathExists 后,我可以将参数传递给可执行文件,并且应用程序使用预期的参数运行它们。

但是,当我尝试传递包含“无效”文件名字符(例如“/”)的参数时,我会停止并收到以下示例消息:

并且不允许继续,即使 ValidateNames 设置为 false。

这是关于对话框的代码:

OpenFileDialog dialog = new OpenFileDialog();
dialog.AddExtension = false;
dialog.CheckFileExists = false;
dialog.CheckPathExists = false;
dialog.ValidateNames = false;
if (dialog.ShowDialog() == DialogResult.OK) {
    //Parse text manually here (parsing is fully handled on the developer side)
}

有没有办法解决这个问题并完全禁用输入验证,还是我必须编写自定义文件对话框实现?

【问题讨论】:

  • 哦,我必须结束我的问题吗?
  • 对我来说听起来像是你试图滥用而不使用 OpenFileDialog,这意味着打开文件,而不是启动程序并获取参数,为什么不让它这样做然后弹出一个第二个控件,带有参数的字符串输入?
  • 不,只是提及它,以便它显示在“已链接”部分供未来访问者查找。
  • 我看到here FOS_NOVALIDATE 标志说“不要检查会阻止应用程序打开所选文件的情况,例如共享违规或访问被拒绝错误。” -- 这与非法字符无关。我怀疑你在这里运气不好,可能不得不编写你自己的对话框 - 或者只使用一个单独的参数作为上面建议的参数。

标签: c# openfiledialog


【解决方案1】:

您不能覆盖默认验证。因此,您要么必须在单独的对话框中询问参数,要么自己重新实现文件打开对话框。

【讨论】:

    猜你喜欢
    • 2014-07-25
    • 1970-01-01
    • 2023-04-05
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 2016-03-01
    • 1970-01-01
    相关资源
    最近更新 更多