0

我打算创建一个 .mp4 列表框,我可以从中播放我选择的 .mp4。我已经创建了 .mp4 播放器(通过拖放),我正在处理如何处理 listBox 的问题。

        private void button1_Click(object sender, RoutedEventArgs e)
    {
        var dialog = new System.Windows.Forms.FolderBrowserDialog();
        System.Windows.Forms.DialogResult result = dialog.ShowDialog();
        try
        {
            DirectoryInfo dr = new DirectoryInfo(dialog.SelectedPath.ToString());
            if (result == FORMS.DialogResult.OK)
            {
                foreach (FileInfo f in dr.GetFiles())
                {
                    listBox1.Items.Add(f);
                }
            }
        }
        catch { }
    }

这仅使我能够将所有 .mp4 文件(来自所选文件夹)显示在 listBox 中,如何设法将对象从 listBox 拖到 .mp4 播放器(已经启用拖放)。

4

2 回答 2

0

您可以使用 DragDrop.DoDragDrop方法执行此操作。

例子:

    <ListBox SelectionChanged="Selector_OnSelectionChanged">
        <ListBoxItem>X</ListBoxItem>
        <ListBoxItem>Y</ListBoxItem>
        <ListBoxItem>Z</ListBoxItem>
    </ListBox>

在代码中

private void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
     ListBox listbox = sender as ListBox;
     DragDrop.DoDragDrop(listbox, listbox.SelectedItem, DragDropEffects.None);
}

可能是在您的 mp4 播放器中,您需要实现的不仅仅是启用拖放(例如提取拖动的项目并播放它......)

您可以在MSDN 拖放概述页面上找到更多信息。

希望这可以帮助

于 2013-10-09T18:57:41.113 回答
0

:) 非常感谢,这真的很有帮助!您对 .mp4 播放器的看法是正确的,他确实需要识别对他的拖累,但我就是不知道怎么做。我确实设法通过直接从您的计算机(例如桌面)拖动 .mp4 来编写播放 .mp4 的代码,这是代码:

        private void Grid_Drop(object sender, DragEventArgs e)
    {
        string filename = (string)((DataObject)e.Data).GetFileDropList()[0];
        mediaElement1.Source =new Uri(filename);
        mediaElement1.LoadedBehavior = MediaState.Manual;
        mediaElement1.UnloadedBehavior = MediaState.Manual;
        mediaElement1.Volume = (double)slider_vol.Value;
        mediaElement1.Play();
    }

该代码还有其他附加组件,但它们并不重要。我应该在播放器的“播放”按钮上使用拖放的什么功能?以及如何获取文件名以实际处理该文件?谢谢!

于 2013-10-10T05:52:25.463 回答