2011-12-07 23 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の1つはフルパスを提供しませんが、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

よろしくお願いします –

関連する問題