[英]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.