簡體   English   中英

從列表框項目中的路徑獲取文件名

[英]Get File Name from a Path in Listbox Item

我想減少路徑的長度,只顯示文件名。

例如,假設路徑為c:\\\\program files\\...\\123.jpg我只想顯示123.jpg

這是到目前為止我一直在使用的代碼。 有人可以建議修改嗎?

private void button1_Click(object sender, EventArgs e)
{
    panel3.Controls.Clear();
    var ofd = new OpenFileDialog();
    ofd.Multiselect = true;
    ofd.Filter = "DICOM Files (*.dcm;*.dic)|*.dcm;*.dic|All Files (*.*)|*.*";

    if (ofd.ShowDialog() == DialogResult.Cancel)
        return;
    foreach (string s in ofd.FileNames)
    {  
        listBox1.Items.Add(s);
    }
}

System.IO namespace有一個名為Path的類。
在眾多靜態方法之間,您可以找到

 Path.GetFilename(string);

在添加循環中使用它只能設置文件名

listBox1.Items.Add(Path.GetFileName(s));

但是,我建議將文件夾名稱保存在某個位置,因為如果您需要處理這些文件,則需要它。 而且,您猜怎么着,Path也有一種方法可以從完整文件名中提取路徑

if(filenames.Length > 0)
     string workingPath = Path.GetDirectoryName(filenames[0]);

編輯從下面的評論中,您似乎多次調用此button_click,並且每次選擇其他文件夾時都如此。 在這種情況下,從所選文件名中刪除路徑部分會使列表框充滿無法檢索的文件,因為您不知道該路徑部分(已剝離)。 如果您需要檢索選擇的文件以執行某種處理,則需要將這些文件的完整路徑存儲在某個位置並能夠檢索它們。
您可以通過在List<string>實例中存儲所選文件來實現此結果。

在全局級別聲明一個變量來存儲這些完整文件名
using System.Collection.Generic;添加)

List<string> selectedFiles = new List<string>();

現在,在按鈕內部單擊,以相同的順序將完整文件名添加到List<string>並將剝離的文件添加到ListBox項

private void button1_Click(object sender, EventArgs e)
{
    panel3.Controls.Clear();
    var ofd = new OpenFileDialog();
    ofd.Multiselect = true;
    ofd.Filter = "DICOM Files (*.dcm;*.dic)|*.dcm;*.dic|All Files (*.*)|*.*";

    if (ofd.ShowDialog() == DialogResult.Cancel)
        return;

    foreach (string s in ofd.FileNames)
    {  
        listBox1.Items.Add(Path.GetFileName(s));
        selectedFiles.Add(s);
    }
}

現在,如果要在列表框中檢索所選文件的完整路徑,則可以使用

private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
   if(listBox1.SelectedIndex >= 0)
   {
       string fullFileName = selectedFiles[listBox1.SelectedIndex];
       .... process the filename ....
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM