【发布时间】:2010-10-28 02:31:20
【问题描述】:
我需要使用OpenFileDialog 来输入 URI 或本地路径。问题是 URL 的架构不是 windows 知道的(或者应该知道,因为它是用于测试的 hack)。
我可以关闭所有验证,只要我不给它提供返回的无效字符,但它会很乐意吃其他任何东西,这也不是我想要的。
我想要的是它接受有效的本地路径和格式正确的 URI,而不验证 Uri 的架构组件,即http、ftp 或开头的任何内容。
我当前的代码是:
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