- 題名: 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 コントロールが完全にインスタンス化および初期化された後でなければ参照できません。