迭代媒体文件属性并将文件名显示到列表框

时间:2017-06-06 09:52:34

标签: c# winforms listbox

我正在编写一个简单的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

输出显示如下截图:

enter image description here

我希望能够选择多个文件并在列表框中显示,但我得到了一个:

  

附加信息:无法使用已与其基础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?并没有做到这一点。

1 个答案:

答案 0 :(得分:0)

尝试以下操作将文件名添加到ListBox:

listBox1.Items.AddRange(selected);

完成后,您可以显示总持续时间。

编辑: 要仅列出文件名,请使用以下行。

listBox1.Items.AddRange(selected.Select(o=>System.IO.Path.GetFileName(o)).ToArray());