我正在使用WebBrowser制作WPF程序,该程序将播放视频。我想知道是否有一种方法可以禁用其中的网页的鼠标事件,以便当鼠标悬停在其上时,视频控件不会出现。
我尝试将诸如按钮之类的对象放置在网页的前面,并将其不透明度设置为0,但是鼠标事件仍然发生。
我将WebBrowser.IsEnabled
属性更改为false,但是浏览器的内容再次检测到鼠标悬停。
有没有办法得到想要的结果?
答案 0 :(得分:3)
WebBrowser控件不是通常的wpf控件。它是一个ActiveX主机,用于将浏览器托管在新窗口中,该新窗口位于wpf窗口顶部。这就是Windows的“空域问题”。
这就是为什么设置IsEnabled属性或在其之上放置另一个控件的原因。
由于WebBrowser有其自己的窗口,因此阻止鼠标输入到网页的唯一方法是阻止鼠标输入到浏览器窗口。您可以通过外部调用EnableWindow(IntPtr hWnd, bool enable)
来做到这一点。
这是一个小样本:
MainWindow.xaml:
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="MainWindow"
Width="800"
Height="450"
mc:Ignorable="d">
<Grid>
<WebBrowser x:Name="Browser"/>
</Grid>
</Window>
MainWindow.xaml.cs:
namespace Test
{
static class Win32
{
[DllImport("user32.dll")]
public static extern bool EnableWindow(IntPtr hWnd, bool enable);
}
public partial class MainWindow : Window
{
public MainWindow()
{
Loaded += MainWindow_Loaded;
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Win32.EnableWindow(Browser.Handle, false);
}
}
}
这将禁用对浏览器窗口的所有鼠标和键盘输入。