- 題名: Navigateでエラーがでてしまう
- 日時: 2006/09/20 8:30:25
- ID: 17622
- この記事の返信元:
- (なし)
- この記事への返信:
- [17627] Re[1]: Navigateでエラーがでてしまう2006/09/20 20:46:21
- ツリーを表示
フォームのActivatedイベントハンドラ内で次のようにしてみると表示できました。 Static firstCall As Boolean = True If firstCall Then ie.Navigate("http://www.google.co.jp/") firstCall = False End If .NET 2.0では、Activatedイベントに替えてShownイベントを使うといいようです。 こちらに参考情報があります。 http://www.atmarkit.co.jp/fdotnet/dotnettips/470formshown/formshown.html
■No17667に返信(tororoさんの記事) > Loadイベントとインスタンス時にNavigateしましたが,無理でした。 > また,Loadイベント内にて,Form.Controls.add(IE)を行なった後, > Navigateしたのですが,無理でした。 んん? おかしいな。 Public Class Form1 Inherits System.Windows.Forms.Form <STAThread> Public Shared Sub Main() System.Windows.Forms.Application.Run(New Form1()) End Sub Private browser As New AxSHDocVw.AxWebBrowser() Public Sub New() browser.Dock = System.Windows.Forms.DockStyle.Fill Me.Controls.Add(browser) End Sub Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Me.Load browser.Navigate("http://www.yahoo.co.jp/") End Sub End Class 事前に Form の Controls に Add しておき /* ここではコンストラクタに直接記述しています。 VS を使って WebBrowser コントロールを D&D 場合は、 InitializeComponent メソッド内にこのコードが追加されるはずです。 InitializeComponent 自体はコンストラクタが呼び出しています。 */ その後の Load イベントで Navigate します。
■No17714に返信(tororoさんの記事) 私の環境で、現在は下のコードだけで動作しています。 Public Class Form1 Inherits System.Windows.Forms.Form (Windows フォーム デザイナで生成されたコード) Private ie As New AxSHDocVw.AxWebBrowser Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ie.Size = New Size(600, 400) ie.Location = New Point(20, 20) Me.Controls.Add(ie) ie.Navigate("http://www.google.co.jp/") End Sub End Class ただ、最初はこれと同じようなコードで動作せず、下のように NavigateをActivatedイベントハンドラに移すと動作しました。 Private Sub Form1_Activated(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MyBase.Activated Static firstCall As Boolean = True If firstCall Then ie.Navigate("http://www.google.co.jp/") firstCall = False End If End Sub そこで、「最初はLoadイベント時に呼んだから動作しなかったのだろう」と 思っていたのですが、もう一度NavigateをLoadイベントハンドラに戻してみると、 予想に反して動作したのは不思議な点です。 > Shownイベントがないんですが,何か宣言しなければならないのでしょうか? .NET 2.0ならばShownイベントが使えますが、.NET 1.xにはShownイベントがないので、 上ではShownのかわりにActivatedを使い、初回以外はスルーしています。 もしかしたらtororoさんの環境で、Activated時にはNavigateできるということは ないでしょうか。 あと、素人考えで恐縮ですが、Navigateの前に Me.Show() System.Threading.Thread.Sleep(適当な長さ) を入れるなんていうのは、だめでしょうか。
分類:[.NET]
お世話になります。
以下コードにてエラーになり,解決方法が分かりません。
Navigateできる箇所とできない箇所があり,できない箇所については,
以下の通りとなっています。
ActiveXが無効になっているらしいのですが,どのように有効にするのかも分かりません。
ご教授のほど,よろしくお願い致します。
環境
VB.net
OS XP
エラー内容:
'InvalidActiveXStateException'のハンドルされていない例外がaxinterop.shdocvw.dllで発生しました。
ソース:
Dim ie As New AxSHDocVw.AxWebBrowser
ie.Navigate("http://www.google.co.jp/")
自分なりに調べた結果:
無効な状態にある ActiveX コントロールを参照したときにスローされる例外。
ActiveX コントロールのパブリック プロパティおよびパブリック メソッドは、
ActiveX コントロールが完全にインスタンス化および初期化された後でなければ参照できません。