【问题标题】:How to make OpenFileDialog accept "valid" URIs如何让 OpenFileDialog 接受“有效”的 URI
【发布时间】:2010-10-28 02:31:20
【问题描述】:

我需要使用OpenFileDialog 来输入 URI 或本地路径。问题是 URL 的架构不是 windows 知道的(或者应该知道,因为它是用于测试的 hack)。

我可以关闭所有验证,只要我不给它提供返回的无效字符,但它会很乐意吃其他任何东西,这也不是我想要的。

我想要的是它接受有效的本地路径和格式正确的 URI,而不验证 Uri 的架构组件,即httpftp 或开头的任何内容。


我当前的代码是:

var dialog = new System.Windows.Forms.OpenFileDialog();

dialog.CheckFileExists = false;
dialog.CheckPathExists = false;
dialog.ValidateNames = false;

var result = dialog.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK)
    return dialog.FileName;

如果我提供对话框foo://127.0.0.1/foo,它会将文件运行到最后一行并以“The given path's format is not supported.”崩溃

为什么它还在尝试验证东西?

【问题讨论】:

  • 你愿意接受多少黑客攻击? OpenFileDialog 显然不是为这种情况设计的,而且它不是特别可扩展的。任何解决方案都可能需要将 ValidateNames 设置为 false,然后覆盖 HookProc 并仅重新创建您想要的验证过程的部分。也许可行,但不漂亮。

标签: .net uri openfiledialog


【解决方案1】:

我假设您说的是 C#/.NET,因为您将其称为“OpenFileDialog”。

我假设您需要做的是子类化对话框本身(毕竟,它是一个 Win32 对话框)。不幸的是,我不知道如何做到这一点,但希望它能将您推向正确的方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 2015-07-01
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多