如何在 WPF 中完全将焦点设置在 WebBrowser 对象上

How to completely set focus on a WebBrowser object in WPF

我有一个基本的 class,里面有一个 WebBrowser:

<Window x:Class="X.Y"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="X- Music Video"
    WindowState="Maximized"
    WindowStyle="None">

    <WebBrowser x:Name="webBrowser1" KeyDown="Window_KeyDown" Focusable="True"/>

</Window>

然后当我尝试导航到它时,它通过全屏打开 YouTube 视频来工作:

this.webBrowser1.NavigateToString(<html with youtube embedded>);
this.webBrowser1.Focus();

示例html:

<html>    <head>        <meta http-equiv="X-UA-Compatible" content="IE=Edge"/>        <style type="text/css">body, html{margin: 0; padding: 0; height: 100%; overflow: hidden;}#content{position: absolute; left: 0; right: 0; bottom: 0; top: 0px;}</style>     </head>    <body>        <div id="content">            <iframe width="100%" height="100%" src="https://www.youtube.com/embed/QDfKzB2T0i4?autoplay=1&start=3"                </iframe>        </div>    </body></html>

现在出现的问题是全屏视图不是 "focused"。 .Focus() 确实启用键盘焦点,但不是 complete 激活。最终发生的是屏幕顶部和左侧有一个灰色边框。单击将其删除并让我完全专注。

你可以在上图中看到它,2 像素宽的灰色边框。

有什么我可以改进的吗?整个项目在 github 上,您可以从发行版下载 .exe 到 运行。不过,它需要一个 Spotify 帐户才能工作,因此希望它具有足够的可重现性。

它实际上是一个 HTML/CSS 修复,与 c# 或 wpf 无关。

需要做的两件事是:

  • frameborder = "0" 添加到 iFrame

  • 执行以下CSSiframe:focus{ outline: none; }

一旦它们就位,您就可以创建一个无缝的 YouTube 嵌入。