2017-09-04 145 views
-1

我需要通過點擊我的表單上的按鈕來運行某種應用程序, 我在談論WPF桌面應用程序,以及關於C#作爲編程語言,以及今天我遇到了一個問題,我嘗試在按鈕鍵上運行某種應用程序,但是我用調試器意識到我的路徑是這樣寫的:(我在我的Settings.setting文件中保留路徑,並且我沒有使用雙反斜線那是我第一次quuestion,爲什麼我的下面提到的路徑看起來就像是,string.Replace不會替換我的字符串中的雙反斜槓

C:\\ \\我的電腦MyApplication的\\ Application.exe

,我需要它的單反斜線,我試圖做書面張貼如下:

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."); 
      } 
} 

我意識到Directory.Exists(path2)是八方通假的,所以它acctually意味着我的路徑不存在,即使存在,所以我想我需要刪除「\\」並將其替換爲「\」:)

+2

'爲什麼我的路徑看起來像that'什麼是你在調試器窗口中看到。使用*放大鏡*圖標將內容看作文本。 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,但是這是你說的是真的,但是不幸的是我根本沒有解決我的問題,但投票! –

+0

@ Roxy'Pro:這應該足以讓你指向正確的方向。無論如何,我用你所需要的更新了我的答案。再讀一遍。 – JuanR