2012-02-20 13 views
1

ユーザーが設定できるファイルを開こうとしています。つまり、決して設定されたパスやファイルにはなりません。ユーザーがファイルを選択すると、下のこのボタンを開くファイルが開きます。私はl1とp1をパブリックストリングとして宣言しました。2つの文字列からのプロセスの開始

public void button4_Click(object sender, EventArgs e) 
    { 

     DialogResult result = openFileDialog1.ShowDialog(); 
     if (result == DialogResult.OK) 
     { 

      l1 = Path.GetFileName(openFileDialog1.FileName); 
      p1 = System.IO.Path.GetDirectoryName(openFileDialog1.FileName); 

     } 


    public void button2_Click(object sender, EventArgs e) 
    { 
    //p1 = directory path for example "C:\\documents and settings\documents" 
    //l1 = filename 

     Process.Start(p1+l1); 
    } 

私がファイルを開くには、ディレクトリパスとファイル名を使用してください。これは可能ですか?私はちょうどそこにp1を持つことができ、それは私にそのディレクトリを示すエクスプローラを開くでしょう。見ていただきありがとうございます。

+0

あなたはそれを試してみました?それは動作しましたか?そうでない場合、エラーは何ですか? –

+1

あなたはどんな問題を抱えていますか?このコードを試しましたか?それはうまくいくのですか、そこに問題はありますか?あなたは単にデザインやセキュリティの種類の問題に心配していますか? – Servy

+0

申し訳ありませんが、より具体的なエラーが「システムが指定されたファイルを見つけることができません。私は彼らがアクセスしたい設定されたパスとプログラムを知っているときに、ネット上の他の人々のコードを探し続けています。それよりもダイナミックにしたい。しかし、Havn'tは私がやっていることをしたいと思っている誰かを見つけました。 – Marshal

答えて

3

はい、それは動作しますが、私はあなたのコードではなく、これを更新する推薦:

var path = Path.Combine(p1, l1); 
Process.Start(path); 
+0

これは動作しますが、テキストボックスでテストしましたが、ファイルはロードされません。私はそれがファイル名の空白と何か関係があると感じています。そして.doc拡張子は削除されています。同じエラーがまだあります。 – Marshal

+0

奇妙な 'Path.GetFileName'は拡張を削除してはいけません。スペースも問題ではありません。 –

+0

私のマシン上でコードをテストしました。私のデスクトップからWord文書を開き、期待通りに機能しました。パスにはスペースも含まれていました。 –

2

ディレクトリとファイル名を組み合わせるために文字列連結を使用しないでください。結果の文字列は次のようになります。

C:\documents and settings\documentsfilename 
            ^^ 
          this is wrong 

代わりにPath.Combineを使用してください。

string path = Path.Combine(p1, l1); 
Process.Start(path); 
1

あなたは、単にこれをしない理由: -

public void button4_Click(object sender, EventArgs e) 
{ 
    string fileNameWithPath; 
    DialogResult result = openFileDialog1.ShowDialog(); 
    if (result == DialogResult.OK) 
    { 
     fileNameWithPath = openFileDialog1.FileName; 
    } 
} 

public void button2_Click(object sender, EventArgs e) 
{ 
    Process.Start(fileNameWithPath); 
} 
関連する問題