我有一个网页,基本上是一个带有自定义控件的视频,并且已经放在Webview2中。当我尝试使用页面上的全屏控件时,它就不会进入全屏模式。由于这是一个全新的Webview2和项目,我没有对代码进行任何更改。
有人知道我该怎么做吗?
有人知道我该怎么做吗?
当视频进入全屏模式时,它将覆盖WebView
控件的表面,并引发一个事件来让您知道全屏模式已更改,然后由您决定要做什么。如果您有一个设置为Dock=Fill(填充)以填满窗体的WebView
控件,则只需在视频进入全屏模式时处理该事件,然后使您的窗体全屏即可。
正如其他答案中也提到的,当页面中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;
}
}
}
ContainsFullscreenElementChanged
事件文档和示例代码中了解更多信息。