我有一个网页,基本上是一个带有自定义控件的视频,已放在 webview2 中,当我尝试使用该页面具有的全屏控件时,它不会进入全屏。 我没有对代码进行任何更改,因为它是一个全新的 webview2 和项目。
有人知道我该怎么做吗?
最佳答案
当视频进入全屏模式时,它会覆盖 WebView
控件的表面并引发一个事件让你知道全屏模式已经改变,然后由你决定决定做什么。如果你有一个设置为 Dock = Fill 的 WebVeiw
控件来填充表单,当视频进入全屏模式时你可以处理该事件,然后使你的表单全屏 -屏幕。
正如另一个答案中提到的那样,当页面中 HTML 元素的全屏状态更改时 CoreWebView2.ContainsFullScreenElementChanged将被提高。您可以处理该事件,然后检查 CoreWebView2.ContainsFullScreenElement指示 WebView2 是否包含全屏 HTML 元素并根据该元素更改表单大小/模式的属性。
示例
在此示例中,我向我的表单添加了一个 FullScreen
属性,还处理了 ContainsFullScreenElement
并在我的表单中在全屏模式和正常模式之间切换。
要使其正常工作,请确保您的表单上有一个 WebView
控件并将其 Dock
设置为 Fill
然后处理 Load
如下形式的事件:
private async void Form1_Load(object sender, EventArgs e)
{
webView21.Source = new Uri("https://youtube.com");
await webView21.EnsureCoreWebView2Async();
webView21.CoreWebView2.ContainsFullScreenElementChanged += (obj, args) =>
{
this.FullScreen = webView21.CoreWebView2.ContainsFullScreenElement;
};
}
private bool fullScreen = false;
[DefaultValue(false)]
public bool FullScreen
{
get { return fullScreen; }
set
{
fullScreen = value;
if (value)
{
this.WindowState = FormWindowState.Normal;
FormBorderStyle = FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
}
else
{
this.Activate();
this.FormBorderStyle = FormBorderStyle.Sizable;
this.WindowState = FormWindowState.Normal;
}
}
}
关于c# - 当页面视频全屏时将 Webview2 切换到全屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65806994/