2017-09-04 7 views
-1

フォームのボタンをクリックすると、何らかのアプリケーションを実行する必要があります WPFデスクトップアプリケーションとプログラミング言語としてのC#今日私は問題に直面して、私はボタンのキーを押してアプリケーションを実行しようとしましたが、デバッガで私のパスが次のように記述されていることに気づきました。(私はSettings.settingファイルのパスを保持しています。二重のバックスラッシュを使用し、それが私の最初のquuestionで、なぜの下に言及したもののように見える私のパス、です)string.Replaceは文字列の二重バックスラッシュを置き換えません

C:\\マイコンピュータ\\ MyApplicationを\\ Application.exe

と私はそれは私が何をしようとしたものを、単一のバックスラッシュ、と書かれた必要が下に掲載されています。私はDirectory.Exists(path2)はオールウェイズ偽で実現

private void OpenApplication_Click(object sender, MouseButtonEventArgs e) 
{ 
      string path = Globals.MyApplicationPath; 
      string path2 = path.Replace(@"\\", @"\"); 
      //path2 is still dobule backshashed :(

      if (Directory.Exists(path2)) 
      { 
       ProcessStartInfo start = new ProcessStartInfo(); 
       start.FileName = Globals.MyApplicationPath; 
       Process.Start(start); 
      } 
      else 
      { 
       MessageBox.Show("Path is not correct."); 
      } 
} 

ので、acctuallyそれが存在する場合でも、私のパスは、存在しないことを意味しだから私は "\\"を取り除いて "\"で置き換える必要があると思う。

+2

'なぜ私のパスは、それはあなたがデバッガウィンドウに表示されるものであるthat'のように探しています。テキストをテキストとして表示するには、* magnifier *アイコンを使用します。 https://stackoverflow.com/a/26379763/932418 –

+0

@LB拡大鏡のアイコンを使用しています。私の値はうまく見えますが、そのパスが100%存在する場合でも常にfalseです。:/ –

+0

パスに設定をスラッシュなしで入力すると、コード内にスラッシュはありません。 C#がその文字を処理する方法を見ているだけです。パスは存在しません。あなたはそうすると思います。それがあなたの問題です。もう一度見てください。推奨されているように虫眼鏡アイコンを使用して文字列をつかみ、フォルダにエクスプローラで直接貼り付けてください。 – JuanR

答えて

1

私は問題が何であるか知っていると思う。

パスにファイル名が含まれています。 Directory.Exists()メソッドは、有効なディレクトリの名前ではないため、falseを返します。

あなたが何を探していると、ファイル名を除去してからチェックし、ディレクトリを検索される場合:

var path2 = Path.GetDirectoryName(path); 
var exists = Directory.Exists(path2) //This should be true 

何がしたいことは、ファイルが存在するかどうかを確認する場合は、使用:

File.Exists(path) 

だからあなたのコードは次のようになります。

private void OpenApplication_Click(object sender, MouseButtonEventArgs e) 
{ 
     if (File.Exists(Globals.MyApplicationPath)) 
     { 
      ProcessStartInfo start = new ProcessStartInfo(); 
      start.FileName = Globals.MyApplicationPath; 
      Process.Start(start); 
     } 
     else 
     { 
      MessageBox.Show("Path is not correct."); 
     } 
} 
+0

これは真実ですが、パス名からWord.exeを抽出するとWord.exeなどのアプリケーションを実行する方法はありますが、これは本当ですが、unfortunatellyは問題を一切修正していないので、しかし投票する! –

+0

@ Roxy'Pro:それは正しい方向にあなたを指すのに十分であったはずです。とにかく、私はあなたの必要なもので私の答えを更新しました。もう一度読んでください。 – JuanR

関連する問題