2017-06-04 5 views
0

何らかのコンテンツとボタンがセットされたDockPanelを持つタブレット上で実行される小さなWPFアプリケーションを構築しています。画像、ビデオファイル、PDFおよびウェブページを含む、表示されるコンテンツとして様々な種類のメディアをロードする。デフォルトのコンテンツは画像のスライドショーであり、一定時間が経過しても入力が検出されない場合、現在のコンテンツはスライドショーに戻されます。WPFウィンドウPreviewMouseMoveイベントは、マウスがWebブラウザーコントロール上にあるときに起動しません。

これは、毎秒タイマーを起動してカウンタを1ずつ増やし、カウンタがある値を超えた場合にスライドショーに戻り、カウンタをリセットするメインウィンドウにPreviewMouseMoveイベントを関連付けています。これは画像やビデオファイルでうまく動作しますが、WebBrowserコントロールで表示しているPDFやWebページは、PreviewMouseMoveイベントが何らかの原因で発生するのを防ぎます。これが不可能であるべきだと私は考えていますか?そうでない場合は、マウス動作をグローバルに検出する方法や、Webブラウザーからイベントを取得する方法はありますか? WebBrowserのマウスイベントによる奇妙な動作のように思えますが、多くの質問がありますが、Windows.Controls.WebBrowserではなく、WinFormsの実装を使用してサンプルを見つけることができました。別のDocumentプロパティを持ちます。

+0

私はそれが可能だと信じていますが、Webブラウザはそれが独自のスタックであり、ブラウザのすべてがJavascriptであることを覚えています。あなたは事をするためにjavascriptを使ってイベントハンターをセットアップできますが、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; 
    } 
} 
関連する問題