当鼠标悬停在WebBrowser控件上时,WPF窗口PreviewMouseMove事件不会触发

时间:2017-06-04 20:30:10

标签: c# wpf mouseevent webbrowser-control

我正在构建一个小型WPF应用程序,以便在平板电脑上运行,该平板电脑具有带有某种内容的DockPanel和一组按钮,当按下这些按钮时,会加载各种媒体作为要显示的内容,包括图像,视频文件,PDF和网页。默认内容是图像的幻灯片显示,如果在一定时间后未检测到任何输入,则当前内容应恢复为幻灯片显示。

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

1 个答案:

答案 0 :(得分:0)

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;
    }
}