DOBON.NET DOBON.NETプログラミング掲示板過去ログ

WebBrowserでスクロールを検知する方法

環境/言語:[C# NET Framework2.0]
分類:[.NET]

WebBrowserコンポーネントを使っていて

スクロールを検知したいのですが
良い方法はないでしょうか


スクロールイベントが見当たらず・・・

なにとぞよろしくお願いいたします
2012/07/26(Thu) 14:44:16 編集(投稿者)

■No30761に返信(たいごさんの記事)
> WebBrowserコンポーネントを使っていて
>
> スクロールを検知したいのですが
> 良い方法はないでしょうか
>
>
> スクロールイベントが見当たらず・・・
>
> なにとぞよろしくお願いいたします

JavaScript の onScroll を AJAX で非同期ポストバックするとか。

# あっと、WebBrowser コントロールでと書いてありましたね。
# 私の回答は忘れてください...
# Web アプリケーション (ASP.NET) の話かと勘違いしていました。
じゃんぬねっとさん

アドバイスありがとうございます

> JavaScript の onScroll を AJAX で非同期ポストバックするとか。

ん〜
WebBrowserに
JavaScriptを流し込むって事ですか・・・

出来れば
WebBrowserにイベント追加できればなぁ〜
なんて漠然と考えていました
■No30761に返信(たいごさんの記事)
> スクロールを検知したいのですが
> 良い方法はないでしょうか
Scroll イベントで。

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    webBrowser1.Document.Window.Scroll += new HtmlElementEventHandler(Window_Scroll);
}

void Window_Scroll(object sender, HtmlElementEventArgs e)
{
    this.Text = DateTime.Now.ToString("mm:ss.ffff");
}



スクロール量まで取得したいのであれば:

Point scrollPos = Point.Empty;

mshtml.HTMLDocument doc = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument;
string compatMode = doc.compatMode;
mshtml.IHTMLElement2 element;
if (compatMode == "CSS1Compat")
{
    element = doc.documentElement as mshtml.IHTMLElement2;
}
else
{
    element = webBrowser1.Document.Body.DomElement as mshtml.IHTMLElement2;
}
if (element != null)
{
    scrollPos = new Point(element.scrollLeft, element.scrollTop);
}
this.Text = scrollPos.ToString();
魔界の仮面弁士さん

ありがとうございます
無事イベントが発生して解決できました。



余談ですが
c#でasを使ってもキャストが出来るんですねぇ

初めて知りました


本当にありがとうございました
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板