c# 使用VLC 播放器时,事件被阻塞,无法直接使用鼠标事件,甚是不便。
_myVlcControl.MediaPlayer.BeginInit();
_myVlcControl.MediaPlayer.CreateControl(); // 在播放器顶层添加一个可接受鼠标事件的透明控件
_myVlcControl.MediaPlayer.VlcLibDirectoryNeeded += OnVlcControlNeedsLibDirectory;
_myVlcControl.MediaPlayer.TimeChanged += MediaPlayer_TimeChanged;
_myVlcControl.MediaPlayer.EndInit();
System.Windows.Forms.Panel panelDoubleClick = new System.Windows.Forms.Panel();
panelDoubleClick.Dock = DockStyle.Fill;
panelDoubleClick.BackColor = System.Drawing.Color.Transparent; // 背景透明
panelDoubleClick.MouseClick += panelDoubleClick_MouseClick;
_myVlcControl.MediaPlayer.Controls.Clear();
_myVlcControl.MediaPlayer.Controls.Add(panelDoubleClick);
panelDoubleClick.BringToFront(); // 置顶
void panelClick_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
解决方法:
既然Winform的视频控件事件被阻塞,那我们就在Winform的控件上面添加一个透明的可接受鼠标事件的控件即可。
_myVlcControl.MediaPlayer.BeginInit();
_myVlcControl.MediaPlayer.CreateControl(); // 在播放器顶层添加一个可接受鼠标事件的透明控件
_myVlcControl.MediaPlayer.VlcLibDirectoryNeeded += OnVlcControlNeedsLibDirectory;
_myVlcControl.MediaPlayer.TimeChanged += MediaPlayer_TimeChanged;
_myVlcControl.MediaPlayer.EndInit();
-------------------------------------------------------------------------------------------------
System.Windows.Forms.Panel panelDoubleClick = new System.Windows.Forms.Panel();
panelDoubleClick.Dock = DockStyle.Fill;
panelDoubleClick.BackColor = System.Drawing.Color.Transparent; // 背景透明
panelDoubleClick.MouseClick += panelDoubleClick_MouseClick;
_myVlcControl.MediaPlayer.Controls.Clear();
_myVlcControl.MediaPlayer.Controls.Add(panelDoubleClick);
panelDoubleClick.BringToFront(); // 置顶
void panelClick_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
PausePlay();
}