2017-06-04 93 views
0

我正在構建一個小型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瀏覽器註冊以通知事件的示例。我會在答案中發佈一些示例代碼。 –

回答

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; 
    } 
} 
相關問題