C# 切换用户控件时暂停视频或停止 Web 浏览器 [英] C# Pause video or stop Web browser when switching UserControls

查看:30
本文介绍了C# 切换用户控件时暂停视频或停止 Web 浏览器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了一个问题,当我在例如电影控件上播放视频,然后使用 combineToFront() 方法切换到家庭控件时.视频还在播放,至少声音还在播放.

I have a problem, when i'm playing a video on e.g movies control and then switch to home control with bringToFront() method. The video is still playing, atleast the sound is still doing it.

public partial class MoviesControl : UserControl
{
    public MoviesControl()
    {
        InitializeComponent();

        int width = 560;
        int height = 315;
        webBrowser1.Width = width + 2;
        webBrowser1.Height = height + 2;
        var embed = "<html><head>" +
        "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge,chrome=1\"/>" +
        "</head><body scroll=\"no\" style=\"padding:0px;margin:0px;\">" +
        "<iframe style=\"border: 1px solid #0000ff;\" width=\"{1}\" height=\"{2}\" src=\"{0}\"" +
        "frameborder=\"0\" allow =\"autoplay; encrypted-media\" ></iframe>" +
        "</body></html>";
        string url = "https://www.youtube.com/embed/JvSZKB2WNKg?rel=0&amp;showinfo=0";
        webBrowser1.DocumentText = string.Format(embed, url, width, height);
    }
}

推荐答案

iframe 嵌入的 YouTube 播放器 API 参考 允许您使用 javascript 代码控制播放器.为了能够使用该脚本 API,您应该通过将 enablejsapi=1 添加到查询字符串来加载 iframe.

YouTube Player API Reference for iframe Embeds allows you to control the player using javascript code. To be able to use that script API, you should load the iframe by adding enablejsapi=1 to query string.

然后为了暂停视频,您正在寻找 pauseVideo 命令.您可以使用以下脚本暂停视频:

Then for pausing a video, you are looking for pauseVideo command. Using the following script you can pause the video:

var i = document.getElementsByTagName("iframe")[0].contentWindow;
i.postMessage('{"event":"command","func":"pauseVideo","args":""}}', '*');

为了能够从 windows 窗体调用它,将它放在你的 html 代码中的一个函数中,然后使用 WebBrowserDocument.InvokeScript() 浏览器控件的方法.

To be able to call it from windows forms, put it in a function in your html code, then call it using WebBrowserDocument.InvokeScript() method of the broswer control.

示例

int w = 560;
int h = 315;
this.webBrowser1.Width = w + 2;
this.webBrowser1.Height = h + 2;
var embed = "<html><head>" +
"<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge,chrome=1\"/>" +
"<script>"+
"function stop() {{"+
"var i = document.getElementsByTagName(\"iframe\")[0].contentWindow;" +
"i.postMessage('{{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}}', '*');" +
"}}</script>"+
"</head><body scroll=\"no\" style=\"padding:0px;margin:0px;\">" +
"<iframe style=\"border: 1px solid #fff;\" width=\"{1}\" height=\"{2}\" src=\"{0}\"" +
"allow =\"autoplay; encrypted-media\" ></iframe>" +
"</body></html>";
var url = "https://www.youtube.com/embed/JvSZKB2WNKg?enablejsapi=1&rel=0&amp;showinfo=0";
webBrowser1.DocumentText = string.Format(embed, url, w, h);

然后您可以随时暂停视频:

Then you can pause the video simply whenever you want:

webBrowser1.Document.InvokeScript("stop", null);

这篇关于C# 切换用户控件时暂停视频或停止 Web 浏览器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆