Лучшее, более чистое решение - обернуть встроенный медиаплеер внутри пользовательского элемента управления и убедиться, что для свойства медиаплеера 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;
}
};
}
}
}
Теперь вы можете просто перетащить любой файл мультимедиа поверх элемента управления медиапроигрывателем в центре формы, и он примет его в качестве объекта перетаскивания и начнет воспроизведение файла мультимедиа.