我正在编写一个简单的WinForms应用程序,我将在编辑视频片段之前使用该应用程序,以便在合并时了解所有视频文件的总长度并且" 已编辑&#34 ;.
理想情况下,我加载它们然后获取每个视频的持续时间并计算它们。
然而,由于我使用外部库IWMPMedia
以及WindowsMediaPlayer
来获取文件名和持续时间,因此我无法使用哪个集合类。
当我使用字符串数组来获取文件名时,我得到了整个路径,这是我不想要的。请参阅以下代码段:
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 = theDialog.FileNames;
foreach(string items in selected)
{
MessageBox.Show("Here are your filenames: " + items);
}
给了我整条道路。在线阅读一些资源,但我似乎无法得到我想要的东西。
我看了一下:How do I drag n drop files into a ListBox with it showing the file path?并没有做到这一点。
答案 0 :(得分:0)
尝试以下操作将文件名添加到ListBox:
listBox1.Items.AddRange(selected);
完成后,您可以显示总持续时间。
编辑: 要仅列出文件名,请使用以下行。
listBox1.Items.AddRange(selected.Select(o=>System.IO.Path.GetFileName(o)).ToArray());