C# 迭代媒体文件属性并在列表框中显示文件名
我正在编写一个简单的WinForms应用程序,我将在编辑视频片段之前使用它,以便在组合和“编辑”时了解所有视频文件的总长度 所以理想情况下,我加载它们,然后得到每个视频的持续时间,并对它们进行统计 但是,由于除了使用C# 迭代媒体文件属性并在列表框中显示文件名,c#,winforms,listbox,C#,Winforms,Listbox,我正在编写一个简单的WinForms应用程序,我将在编辑视频片段之前使用它,以便在组合和“编辑”时了解所有视频文件的总长度 所以理想情况下,我加载它们,然后得到每个视频的持续时间,并对它们进行统计 但是,由于除了使用WindowsMediaPlayer获取文件名和持续时间之外,我还使用了一个外部库iwmpmpmedia,因此我无法确定要使用哪个集合类 当我使用字符串数组获取文件名时,我得到了整个路径,这是我不想要的。请参阅以下代码段: using WMPLib; public partia
WindowsMediaPlayer
获取文件名和持续时间之外,我还使用了一个外部库iwmpmpmedia
,因此我无法确定要使用哪个集合类
当我使用字符串数组获取文件名时,我得到了整个路径,这是我不想要的。请参阅以下代码段:
using WMPLib;
public partial class frmBacklinkMediaSerializer : Form
{
WindowsMediaPlayer wmp;
IWMPMedia mediainfo;
Double Duration(String file)
{
wmp = new WindowsMediaPlayer();
mediainfo = wmp.newMedia(file);
return mediainfo.duration;
}
void callDialogBox()
{
OpenFileDialog theDialog = new OpenFileDialog();
theDialog.Filter = "MP4 Videos (*.mp4)|*.mp4";
theDialog.FilterIndex = 0;
theDialog.Multiselect = true;
DialogResult result = theDialog.ShowDialog();
string[] selected = theDialog.FileNames;
string strFilename = theDialog.FileName;
if (result == DialogResult.OK)
{
FileInfo oFileInfo = new FileInfo(strFilename);
string temp = Duration(strFilename).ToString();
TimeSpan conversion =
TimeSpan.FromSeconds(Duration(strFilename));
if (strFilename != null || strFilename.Length != 0)
{
MessageBox.Show("My file names are below: " + "\n\n" + mediainfo.name + "\n\n" + "My file duration is: " + conversion.ToString(), "Video Properties", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
}
}
}
//I then call callDialogBox() on a button click event
输出如以下屏幕截图所示:
我希望能够选择多个文件并在列表框中显示,但我得到:
其他信息:无法使用已与其基础RCW分离的COM对象
将项目添加到列表框时
因此,有两个问题:
1.能够选择并列出彼此下方的文件名
2.在列表框中列出文件名
关于点1.,下面的代码片段确实实现了这一点,但给出了完整的文件名
string[]selected=dialog.filename;
foreach(选定项中的字符串项)
{
Show(“这是您的文件名:”+项);
}
给我整条路。在线阅读一些资源,但我似乎无法得到我想要的
我看了一下:但它没有起作用。尝试以下方法将文件名添加到列表框中:
listBox1.Items.AddRange(selected);
完成后,您可以显示总持续时间
编辑:
要仅列出文件名,请使用以下行
listBox1.Items.AddRange(selected.Select(o=>System.IO.Path.GetFileName(o)).ToArray());
您想在列表框中列出所有选定的文件名吗?@Abhishek并总结其持续时间。您必须在哪里显示持续时间的总和?@Abhishek标签、消息框或任何内容。。这一部分并不是很挑剔,正如问题中明确提到的,所选字符串数组返回文件名及其路径,我不想要文件名的路径部分。@Harold\u Finch:Hi Harold。我已经编辑了答案。希望这是你想要的。