2011-12-07 75 views
1

在我的情況下,SaveFileDialog不會寫任何文件,但我想用來指定命令行應用程序的路徑,它將在sf對話框中的「保存」的相同位置創建日誌文件。如何從savefiledialog獲取完整路徑並在「startInfo.Arguments」中使用?

SaveFileDialog sfd = new SaveFileDialog(); 
sfd.Filter = "*.txt"; 
string sfdname = saveFileDialog1.FileName; 
if (sfd.ShowDialog() == DialogResult.OK) 
{ 
    Path.GetFileName(sfd.FileName); 
} 

startInfo.Arguments = "--log=" + Path.GetFileName(sfd.FileName); 
+0

你問的東西之前,請使用搜索功能。 –

回答

2

只需卸下Path.GetFileName

startInfo.Arguments = "--log=\"" + sfd.FileName + "\""; 
+0

有了這個,我得到了文件的完整路徑(我用文本框進行了檢查),但命令行應用程序無法識別它。 – user830054

+0

@ user830054:嘗試在路徑中添加引號。查看更新的答案。 –

2

我認爲你正在使用基於你所描述的錯誤對話框的形式。

嘗試使用FolderBrowserDialog類:

string folderPath = string.Empty; 

using (FolderBrowserDialog fdb = new FolderBrowserDialog()) { 
    if (fdb.ShowDialog() == DialogResult.OK){ 
    folderPath = fdb.SelectedPath; 
    } 
} 

if (folderPath != string.Empty) { 
    startInfo.Arguments = "--log=" + folderPath; 
} 
0

問題可能使用了錯誤的FileSaveDialog
Win32.dll中的一個不提供完整路徑,但System.Windows.Forms中的一個沒有。

6

,您可以改用的

Path.GetFullPath(sfd.FileName); 

Path.GetFileName(sfd.FileName); 

完整版...

SaveFileDialog sfd = new SaveFileDialog(); 
sfd.Filter = "*.txt"; 
string sfdname = saveFileDialog1.FileName; 
if (sfd.ShowDialog() == DialogResult.OK) 
{ 
    Path.GetFullPath(sfd.FileName); 
} 

startInfo.Arguments = "--log=" + Path.GetFullPath(sfd.FileName); 
0
OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
       openFileDialog1.Filter = "Image files | *.jpg"; 
       if (openFileDialog1.ShowDialog() == DialogResult.OK) 
       { 
       employee_dp.Image = Image.FromFile(openFileDialog1.FileName); 
       string path = System.IO.Path.GetDirectoryName(openFileDialog1.FileName); 
       string onlyFileName = System.IO.Path.GetFileName(openFileDialog1.FileName); 
       filepath = Path.GetFullPath(path).Replace(@"\", @"\\"); 
       filepath = filepath + "\\\\" + onlyFileName; 
       MessageBox.Show(filepath); 
+0

那是什麼'*'? –

+0

錯別字對不起hehehe –

相關問題