2015-05-26 7 views
1

У меня есть приложение Outlook 2013, написанное с VSTO и VS2013. У меня есть диалог сохранения файла, в котором я устанавливаю Initial Directory на сетевое соединение. Сохранение пути с помощью MailItem.SaveAs() работает, но когда я использую его с saveFileDialog1.InitialDirectory = "W:/etc/etc/";, я просто получаю мою библиотеку документов в качестве исходного каталога. Почему это может не сработать?SaveFileDialog InitialDirectory

Вот соответствующий код:

 SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 
     saveFileDialog1.FileName = filename; 
     saveFileDialog1.InitialDirectory = path; 
     saveFileDialog1.AddExtension = false; 
     saveFileDialog1.CheckFileExists = true; 
     saveFileDialog1.DefaultExt = "\".mht\""; 
     saveFileDialog1.Filter = "\"MHT Files|*.mht|All Files|*.*\""; 

     DialogResult result = saveFileDialog1.ShowDialog(); 

Это все pertinant код. FileName работает отлично, и путь в формате «W:/Folder/Папка /»

Благодаря

+0

Вы пробовали 'путь = @" W: \ Folder \ Folder \ "'? – Insane

+0

Да, я пробовал это – shenk

ответ

2

Посмотрите this статьи о Строковых литералах

Вы должны либо использовать двойной обратный косой если вы хотите один обратный слэш

saveFileDialog1.InitialDirectory = "W:\\etc\\etc\\"; 

или использовать знак @:

saveFileDialog1.InitialDirectory = @"W:\etc\etc\"; 

Также вы должны установить RestoreDirectory, чтобы вернуть рабочий каталог в каталог приложения. Проверьте это link для справки

saveFileDialog1.RestoreDirectory = true; 
+0

Даже если для MailItem.SaveAs() для одиночной косой черты работают одиночные косые черты, мне нужна обратная косая черта? – shenk

+0

Я думаю, что это не имеет значения, если у вас есть косые черты вперед или назад, C# будет преобразовывать его в обратную косую черту внутри. Но проблема в том, что вам нужно сделать ее литерной. –

+0

Я пробовал этот путь, и он все еще не дал мне правильный начальный каталог – shenk

3

Кажется InitialDirectory не принимает/в пути, но требует обратной косой черты

Этот пример работает для меня.

SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 
saveFileDialog1.FileName = "c:/temp/somefilename.txt"; 
saveFileDialog1.InitialDirectory = "c:\\temp\\"; 
saveFileDialog1.AddExtension = false; 
saveFileDialog1.CheckFileExists = true; 
saveFileDialog1.DefaultExt = "\".mht\""; 
saveFileDialog1.Filter = "\"MHT Files|*.mht|All Files|*.*\""; 

DialogResult result = saveFileDialog1.ShowDialog(); 
+0

Я пробовал это – shenk

+0

И? Это работает ? Это сработало для меня. –

+0

Да, у меня это работает, извините – shenk

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