Как перетащить в Windows Media Control - PullRequest
1 голос
/ 16 сентября 2011

Что касается этого поста , я хотел бы предложить возможность перетаскивать видеофайлы в элемент управления мультимедиа Windows, чтобы они открывались автоматически.

Я активировал AllowDropсвойство без эффекта.

Я читал, что использование элемента управления изображением над элементом управления wmp позволяет это сделать, но я не знаю, как это сделать без его отображения через элемент управления видео.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 29 апреля 2012

Лучшее, более чистое решение - обернуть встроенный медиаплеер внутри пользовательского элемента управления и убедиться, что для свойства медиаплеера AllowDrop установлено значение "false", а для свойства пользовательского элемента управления AllowDrop установлено значение true.Сделайте встроенный медиаплеер в док-станцию, чтобы заполнить пользовательский элемент управления, а затем добавьте его в форму, как любой другой пользовательский элемент управления.Выбрав пользовательский элемент управления в своей форме, вы увидите, что события DragEnter и DragDrop отображаются должным образом.Обращайтесь с ними так же, как с обычным элементом управления (код, предоставленный Cody).Вы можете увидеть полный пример в VB по следующей ссылке (просто не забудьте убедиться, что для фактического встроенного медиаплеера в пользовательском элементе управления свойство AllowDrop имеет значение false, иначе оно будет «скрывать» события перетаскивания.из оболочки пользователя):

http://www.code -magazine.com / article.aspx? quickid = 0803041 & page = 5

Но если вы просто хотите обработать перетаскиваниеи перетащите его в любое место над формой, в том числе поверх элемента управления медиапроигрывателя, все, что вам нужно сделать, это обработать события DragEnter и DragDrop контейнера элемента управления ActiveX встроенного мультимедийного проигрывателя и убедиться, что свойство AllowDrop фактического встроенного элемента управления установленов False, чтобы не скрывать события перетаскивания из контейнера, а для параметра AllowDrop контейнера установлено значение true.


Здесь приведен код, поясняющий, как можно использовать события перетаскивания контейнера для созданияиз-за отсутствия событий перетаскивания элемента управления ActiveX медиаплеера.

Просто создайте новую форму, назовите ее MainForm, добавьте необходимые ссылки на WMPLib, чтобы сделать элемент управления Media Player ActiveX доступным для приложения, измените его размер таким образом, чтобы он был шире, чем 320 пикселей, и выше, чем 220 пикселей, и вставьте приведенный ниже код в основной файл кода формы:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using WMPLib;
using AxWMPLib;

namespace YourApplicationNamespace
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
            // 40 is the height of the control bar... 320 x 180 is 16:9 aspect ratio
            Panel container = new Panel()
            {
                Parent = this,
                Width = 320,
                Height = 180 + 40,
                AllowDrop = true,
                Left = (this.Width - 320) / 2,
                Top = (this.Height - 180 - 40) / 2,
            };
            AxWindowsMediaPlayer player = new AxWindowsMediaPlayer()
            {
                AllowDrop = false,
                Dock = DockStyle.Fill,
            };
            container.Controls.Add(player);
            container.DragEnter += (s, e) =>
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                    e.Effect = DragDropEffects.Copy;
            };
            container.DragDrop += (s, e) =>
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                {
                    string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
                    var file = files.FirstOrDefault();
                    if (!string.IsNullOrWhiteSpace(file))
                        player.URL = file;
                }
            };
        }
    }
}  

Теперь вы можете просто перетащить любой файл мультимедиа поверх элемента управления медиапроигрывателем в центре формы, и он примет его в качестве объекта перетаскивания и начнет воспроизведение файла мультимедиа.

0 голосов
/ 16 сентября 2011

Ok. Свойство AllowDrop должно иметь значение true для формы MDI или формы, в которой вы разместили элемент управления проигрывателя видео. Чем вы можете разместить ListBox или Label, как хотите, и выполнить следующие действия:

private void filesListBox_DragEnter(object sender, DragEventArgs e)  
{  
    if (e.Data.GetDataPresent(DataFormats.FileDrop, false) == true)  
    {  
        e.Effect = DragDropEffects.All;  
    }  
}  

private void filesListBox_DragDrop(object sender, DragEventArgs e)  
{  
    string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);  

    foreach (string file in files)  
    {  
        //add To Media PLayer
        //Play the files 
    }  
    //Or Handle the first file in string[] and play that file imediatly

} 
...