[英]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 ....
}
}
使用Path.GetFileName()
返回名稱
參見http://msdn.microsoft.com/zh-cn/library/system.io.path.getfilename(v=vs.110).aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.