2009-05-21 1 views
1

Мне нужно использовать OpenFileDialog для ввода URI или локального пути. Проблема в том, что схема URL-адреса не является окном, о котором известно (или должно знать, потому что это взлом для тестирования).Как сделать OpenFileDialog приемлемым URI

Я могу отключить все проверки и до тех пор, пока я не буду кормить его недействительными символами, которые он возвращает, но потом он будет радостно есть что-нибудь еще, и это не то, что я хочу.

Я хочу, чтобы он принимал действительные локальные пути и правильно отформатировал 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.»

Почему он все еще пытается проверить вещи ?

+0

Сколько вы хотите, чтобы взломать? OpenFileDialog явно не был разработан для этого сценария, и он не был особенно расширяемым. Любое решение, вероятно, приведет к установке ValidateNames в false, а затем переопределит HookProc и воссоздает только те части процесса проверки, которые вы хотите. Возможно, возможно, но не очень. –

ответ

0

Предполагаю, вы говорите о C# /. NET, поскольку вы ссылаетесь на него как на «OpenFileDialog».

Что я предполагаю, вам нужно будет сделать подкласс самого диалога (это, после всего, диалоговое окно Win32). К сожалению, у меня нет знаний о том, как это сделать, но, надеюсь, это подталкивает вас в правильном направлении.

Смежные вопросы