2013-06-27 79 views
3

我見過幾個類似的問題,但我無法弄清楚我做錯了什麼。 我有一個列表框,我希望列出所有選定的測試文件,而不用整個路徑。用這個當前的代碼,沒有文本被輸入到列表框中。我哪裏錯了?從C#文件路徑中提取文件名?

if (cmdBrowse.ShowDialog() == DialogResult.OK) 
{ 
    string testNameShort = Path.GetFileName(listboxTestsToRun.Text.ToString()); 
    listboxTestsToRun.Items.Add(testNameShort); 
} 

在此先感謝!

+0

cmdBrowse是什麼樣的控制? – Steve

+0

FolderBrowser或OpenFileDialog? – Steve

+0

你有沒有調試過,你在看什麼?我不認爲listboxTestsToRun.Text.ToString()做你認爲它的作用。 – Bit

回答

8

假設 cmdBrowse是一個OpenFileDialog並且你想要選擇的文件名你的用戶被添加到列表框中。在這種情況下,你的代碼如下:

if (cmdBrowse.ShowDialog() == DialogResult.OK) 
{ 
    if(cmdBrowse.FileName.Length > 0) 
    { 
     string testNameShort = Path.GetFileName(cmdBrowse.FileName); 
     listboxTestsToRun.Items.Add(testNameShort); 
    } 
} 
+0

+1用於防止空文件名值的保護。 – HuorSwords

+0

完全按照我想要的那樣工作,謝謝! 我現在也看到我在那裏做錯了。我正在從列表框中的內容中繪製我的路徑,而不是從對話框中選擇的文件。 喜歡本網站。謝謝史蒂夫! – Joel

+0

噢,(取決於OP要做什麼),OP可能還應該添加'cmdBrowse.CheckFileExists = true';但我不知道是否需要 – Steve

1

如果cmdBrowse是​​,那麼除非您期望從列表框中獲得其他有意義的內容,否則您需要使用用戶選擇的路徑(這是我懷疑您正在嘗試執行的操作),如:

var fileName = Path.GetFileName(cmdBrowse.FileName); 
1

看執行Path.GetFileNameWithoutExtension上檢索的路徑開始與(文件路徑)的方法,然後將其添加到盒