2013-11-24 79 views
3

我有一个使用axwindowsmediaplayer和C#的winform嵌入式视频。嵌入式Windows Media Player全屏

我有一个计时器,在一段时间后将控件设置为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()

我的问题是,当视频完成后,我失去了全屏模式。我的意思是视频可以回到原来的大小。在拨打selec_video()之后,我尝试设置fullscreen=true,但是出现了一个错误(灾难性错误)。我想这会发生,因为控制已经在全屏幕中......所以我想要做的是呼叫selec_video(),而不会丢失全屏模式。

+1

我编辑了我的问题,我希望你现在可以帮我...谢谢! – MarceloClaure

回答

2

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

private void timer2_Tick(object sender, EventArgs e) 
{ 
    selec_video(); 
    if (videowmp.playState == WMPLib.WMPPlayState.wmppsPlaying) 
    { 
     videowmp.fullScreen = true; 
    } 
} 
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;     
    } 

}