WPF Window PreviewMouseMove事件不会在鼠标悬停时触发WebBrowser控件

WPF Window PreviewMouseMove事件不会在鼠标悬停时触发WebBrowser控件

问题描述:

我正在构建一个小型WPF应用程序,该应用程序在具有带有某种内容的DockPanel的平板电脑上运行,并且一组按钮被按下时,加载各种媒体作为要显示的内容,包括图像,视频文件,PDF和网页。默认内容是图像的幻灯片显示,如果在一段时间后没有检测到输入,则当前内容应恢复为幻灯片显示。WPF Window PreviewMouseMove事件不会在鼠标悬停时触发WebBrowser控件

我一直在做这个,每秒都有一个定时器触发,增加一个计数器1并返回幻灯片,如果计数器超过某个值,并有一个PreviewMouseMove事件绑定到我的主窗口,将计数器复位为0.这适用于图像和视频文件,但是我在WebBrowser控件中显示的PDF和网页阻止了PreviewMouseMove事件以某种方式触发。我认为这应该是不可能的吗?如果没有,是否有其他方法来检测全局鼠标移动,或从WebBrowser获取事件?看起来WebBrowser使用鼠标事件的奇怪行为很常见,并且有很多关于它的问题,但我只能使用浏览器的WinForms实现而不是Windows.Controls.WebBrowser找到示例。具有不同的文档属性。

+0

我相信这是可能的,但记住网络浏览器是它自己的堆栈,浏览器中的所有内容都是Javascript。你可以通过JavaScript设置事件hanlder的事情,但是你的C#程序必须得到通知。查找有关如何让C#程序向Web浏览器注册以通知事件的示例。我会在答案中发布一些示例代码。 –

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     //must wait for load completed 
     webBrowser1.LoadCompleted += new LoadCompletedEventHandler(webBrowser1_LoadCompleted); 
    } 

    private void webBrowser1_LoadCompleted(object sender, NavigationEventArgs e) 
    { 
     mshtml.HTMLDocument doc; 
     doc = (mshtml.HTMLDocument)webBrowser1.Document; 
     //get the IHTMLDocumentEvents2 interface 
     mshtml.HTMLDocumentEvents2_Event iEvent; 
     iEvent = (mshtml.HTMLDocumentEvents2_Event)doc; 
     //Register a handler 
     iEvent.onclick += new mshtml.HTMLDocumentEvents2_onclickEventHandler(ClickEventHandler); 
    } 

    //here's the handler 
    private bool ClickEventHandler(mshtml.IHTMLEventObj e) 
    { 
     textBox1.Text = "Item Clicked"; 
     return true; 
    } 
}