嵌入式Windows Media Player全屏

时间:2013-11-24 02:01:49

标签: c# winforms fullscreen axwindowsmediaplayer

我使用axwindowsmediaplayer和C#。

在winform中嵌入了一个视频

我有一个计时器,在一段时间后将控件设置为fullscreen=true

private void timer1_Tick(object sender, EventArgs e)
{
    timer1.Stop();
    videowmp.fullScreen = true;
}

我使用数据库来获取视频,每次视频播放时我都会调用一个函数来获取它们,出于某种原因,我需要第二个计时器来启动新视频:

private void videowmp_PlayStateChange(object sender,
    AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
    if (e.newState == 8)
    {
        timer2.Interval = 100;
        timer2.Enabled = true;
    }
}

private void timer2_Tick(object sender, EventArgs e)
{
    timer2.Enabled = false;
    selec_video();
}

函数selec_video()获取视频,设置Windows Media Player控件的URL并将其设置为play()

我的问题是,当视频播放完毕后,我将失去全屏模式。我的意思是视频恢复到原来的大小。我在调用fullscreen=true之后尝试设置selec_video(),但我收到了错误(灾难性错误)。我想这是因为控件已经全屏显示...所以我想做的是调用selec_video(),而不会失去全屏模式。

2 个答案:

答案 0 :(得分:2)

以下代码检查您的媒体播放器的播放状态。如果正在播放某些内容,则会将其设置为全屏模式。

private void timer2_Tick(object sender, EventArgs e)
{
     selec_video(); 
     if (videowmp.playState == WMPLib.WMPPlayState.wmppsPlaying)
     {
        videowmp.fullScreen = true;
     }
}

答案 1 :(得分:2)

您可以使用PlayStateChange操作。您还可以从PlayStateChange Event of the AxWindowsMediaPlayer Object

中找到其他州代码
private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
     if (e.newState == 3)//Playing
     {
           axWindowsMediaPlayer1.fullScreen = true;                
     }

}