3

axwindowsmediaplayerC#を使用して winform に埋め込まれたビデオがあります。

しばらくしてからコントロールを設定するタイマーがありfullscreen=trueます。

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

データベースを使用してビデオを取得し、ビデオが終了するたびに関数を呼び出してビデオを取得します。何らかの理由で、新しいビデオを開始するために2番目のタイマーが必要でした:

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()、全画面モードを失うことなく call です。

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 に答える