2013-06-27 5 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 является OpenFileDialog, то, если вы не ожидаете чего-то значимого в списке, вам нужно будет работать с выбранным пользователем способом (что, как я подозреваю, вы пытаетесь сделать), такие как:

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

Посмотрите на выполнение Path.GetFileNameWithoutExtension метод (FilePath) на ваши пути для его извлечения, чтобы начать с, а затем добавить их в коробку