C#将WMP动态添加到表单(当前:音频播放,不显示视频)

C#将WMP动态添加到表单(当前:音频播放,不显示视频),c#,windows-media-player,C#,Windows Media Player,我正在尝试动态加载WindowsMediaPlayer控件,但无法使其正常工作 代码按原样显示,似乎播放音频(可能还有视频),但不在窗体上显示视频。表单保持空白,音频正在播放。(播放WVM文件,不能是编码器问题)我正在导入WMPLib WindowsMediaPlayer videoPlayer; public void createContent(Form form) { PlayFile("F:\\Videos\\CantTouchThis.wmv");

我正在尝试动态加载WindowsMediaPlayer控件,但无法使其正常工作

代码按原样显示,似乎播放音频(可能还有视频),但不在窗体上显示视频。表单保持空白,音频正在播放。(播放WVM文件,不能是编码器问题)我正在导入WMPLib

    WindowsMediaPlayer videoPlayer;

    public void createContent(Form form) {
        PlayFile("F:\\Videos\\CantTouchThis.wmv");
    }

    private void PlayFile(string url) {
        videoPlayer = new WindowsMediaPlayer();
        videoPlayer.PlayStateChange +=
    new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange);
        videoPlayer.MediaError +=
            new WMPLib._WMPOCXEvents_MediaErrorEventHandler(Player_MediaError);
        videoPlayer.URL = url;
        videoPlayer.controls.play();
    }

    private void Player_PlayStateChange(int NewState) {
        if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped) {

        }
    }

    private void Player_MediaError(object pMediaObject) {
        MessageBox.Show("Cannot play media file.");

    }

我们将非常感谢您的帮助。我已经找到了解决方案。这是为将来需要它的人准备的。 代码是: 私有静态AxWMPLib.AxWindowsMediaPlayer wmPlayer

    public static void AddMediaPlayer(Form form1) {
        Button b1 = new Button();
        b1.Text = "Button";
        try {
            wmPlayer = new AxWMPLib.AxWindowsMediaPlayer();

            ((System.ComponentModel.ISupportInitialize)(wmPlayer)).BeginInit();
            wmPlayer.Name = "wmPlayer";
            wmPlayer.Enabled = true;
            wmPlayer.Dock = System.Windows.Forms.DockStyle.Fill;
            form1.Controls.Add(wmPlayer);
            ((System.ComponentModel.ISupportInitialize)(wmPlayer)).EndInit();

            // After initialization you can customize the Media Player
            wmPlayer.uiMode = "none";
            wmPlayer.URL = @"C:\ProjectSilver\assets\RadarDetectie\general\inlog_confirm.ogv";
            wmPlayer.Ctlcontrols.play();
        }
        catch { }
不要忘记导入库AxWMPLib。 在此之后,您需要在类的顶部添加[StatThread],否则会出现异常


祝你好运

顺便说一句:尝试像这样将其添加到表单:form.controls.add(videoPlayer);给出一个参数异常错误。