tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルWebBrowserでのHTMLの表示について
記事No2794
投稿日: 2005/12/20(Tue) 11:38
投稿者kumasan
[OSのVer]:Windows2000    [VBのVer]:VB.NET2003
 
こんにちは。初めて投稿させてもらいます。
WebBrowserでHTMLを表示し、ボタンでのスクロール制御を行っています。(上下左右)
スクロールする必要がない場合(WebBrowserのwindow内にHTMLが収まる)はスクロールボタンを非表示
にしたいと考えています。WebBrowser内にHTMLファイルが表示しきれているかどうか解る方法はない
でしょう
か?

方法としては、ファイルの座標位置を求めてスクロールさせて再び座標位置を取得し、位置が変わっ
てなかったらサイズ内に収まっている。
上記方法が一番簡単と考えているんですが、座標位置の取得方法も分かりません。

どなたかご教授よろしくお願いします。

[ツリー表示へ]
タイトルRe: WebBrowserでのHTMLの表示について
記事No2795
投稿日: 2005/12/20(Tue) 14:07
投稿者魔界の仮面弁士
スクロールバーは、WebBrowser が表示させているわけではなく、
その中に表示されているドキュメントが表示させているものです。

Excelファイルを表示させているなら、WindowのDisplayHorizontalScrollBar等で制御できますし、
HTMLの場合は、スタイルシートでの制御になります。(overflowプロパティとか)

> スクロールする必要がない場合(WebBrowserのwindow内にHTMLが収まる)はスクロールボタンを非表示
> にしたいと考えています。
スクロールボタン が スクロールバー の事だとすると、少し微妙です。

スクロールバーがなければ、その幅の分だけ、表示可能領域がほんの少し広がりますから、
ウィンドウサイズぎりぎりのコンテンツの場合、
「バー表示中はスクロール可能だけど、バーが非表示ならスクロールされない」
という状況もありえるので。

> 座標位置の取得方法も分かりません
scrollTopプロパティとか、scrollHeightプロパティあたりかな。
hhttp://img.microsoft.com/library/media/1033/technet/images/archive/itsolutions/intranet/build/f09tf01.gif
hhttp://www.microsoft.com/japan/developer/library/jpisdk/dhtml/measure/measuring.htm#chp_measuring

[ツリー表示へ]
タイトルRe^2: WebBrowserでのHTMLの表示について
記事No2796
投稿日: 2005/12/20(Tue) 14:38
投稿者kumasan
魔界の仮面弁士さん!
早速の回答ありがとうございます。

> > 座標位置の取得方法も分かりません
> scrollTopプロパティとか、scrollHeightプロパティあたりかな。
基本的な事かもしれませんが、scrollTopプロパティを使用すると、
《'System.NullReferenceException' のハンドルされていない例外が microsoft.visualbasic.dll で発

しました。》
というエラーが発生してしまします。
何か参照設定等行わなければいけないのでしょうか?

Top = Me.AxWebBrowser1.Document.Body.scrollTop
Documentプロパティ記述後、Bodyプロパティがポップアップで出てきませんでした。

どうしたら使用できるようになるか教えて頂けないでしょうか。

[ツリー表示へ]
タイトルRe^3: WebBrowserでのHTMLの表示について
記事No2797
投稿日: 2005/12/20(Tue) 15:15
投稿者魔界の仮面弁士
> Documentプロパティ記述後、Bodyプロパティがポップアップで出てきませんでした。

WebBrowser は、HTML専用というわけではありません。
各種「ActiveX ドキュメント」を表示できるように作られています。

つまり、Document プロパティは、HTML 以外のオブジェクトを返す可能性があるわけです。
そのため Document プロパティは、汎用型である Object 型を返すようになっています。

そしてそれに、どのようなプロパティが実装されているかは、表示させたオブジェクト次第なので、
開発時には、他の型にDirectCast しておかない限り、IntelliSense には表示されないのです。


> Top = Me.AxWebBrowser1.Document.Body.scrollTop
NullReferenceException が発生するという事は、いずれかのプロパティの値が、
「Nothing」になっているという事ですね。

・Me.AxWebBrowser1.Document が Nothing になっていないか?
・Me.AxWebBrowser1.Document.Body が Nothing になっていないか?
・Me.AxWebBrowser1.Document.Body.scrollTop が Nothing になっていないか?

を、IsNothing 関数などでチェックしてみてください。


なお、HTMLがブラウザに表示され、その解析が行われるまでには、若干の時間差があります。
その間に Document プロパティにアクセスすると、不完全な情報を返してきたり、
エラーになったりする事がありますので、その点は注意してください。

[ツリー表示へ]
タイトルRe^4: WebBrowserでのHTMLの表示について
記事No2798
投稿日: 2005/12/20(Tue) 15:33
投稿者kumasan
> なお、HTMLがブラウザに表示され、その解析が行われるまでには、若干の時間差があります。
> その間に Document プロパティにアクセスすると、不完全な情報を返してきたり、
> エラーになったりする事がありますので、その点は注意してください。

魔界の仮面弁士さん。どうも有り難うございました。
時間を置いてから実行したところ、正しく情報を取得することができました。
IsNothing関数でオブジェクトが設定されているか確認する処理を追加し、無事に動作しています。
また何かあったときには宜しくお願いします。

[ツリー表示へ]