3

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 媒体播放器控件的 URL 并将其设置为play().

我的问题是,当视频结束时,我失去了全屏模式。我的意思是视频恢复到原来的大小。fullscreen=true我在调用后尝试设置selec_video(),但出现错误(灾难性错误)。我想这是因为控件已经处于全屏状态...所以我想做的是 call selec_video(),而不会丢失全屏模式。

4

2 回答 2

3

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

private void timer2_Tick(object sender, EventArgs e)
{
     selec_video(); 
     if (videowmp.playState == WMPLib.WMPPlayState.wmppsPlaying)
     {
        videowmp.fullScreen = true;
     }
}
于 2014-03-10T18:12:54.600 回答
2

您可以使用 PlayStateChange 操作。您还可以从AxWindowsMediaPlayer 对象的 PlayStateChange 事件中找到其他状态代码

private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
     if (e.newState == 3)//Playing
     {
           axWindowsMediaPlayer1.fullScreen = true;                
     }

}
于 2015-06-25T11:43:48.710 回答