2015-05-26 254 views
1

我有一个用VSTO和VS2013编写的Outlook 2013插件。我有一个保存文件对话框,我将初始目录设置为网络安装。使用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代码。文件名工作正常,和路径的格式为“W:/文件夹/文件夹/”

感谢

+0

您是否试过'path = @“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(),对于InitialDirectory我需要反斜杠? – shenk

+0

我认为如果你有前进或后退斜杠,c#会将其转换为内部的反斜杠,这并不重要。但问题是,你需要使它成为一个litteral。 –

+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