人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

[VisualBasic2008Express]

VB2008(VB.NET)でプログラムしています。次のように挙動するサブルーチンのコードをお願いできますか。

1. wbName で、strUrl に格納されているURLを表示させることを試みる。
2. intWaitingTime の時間だけ、DocumentComplete イベントが発生するのを待つ。
3. DocumentComplete イベントが発生したら、intCompleteCount に 1 を足し、2に戻る。
3. intWaitingTime の時間が経過しても DocumentComplete イベントが発生しなくなったら、End Sub する。

どのようなコードを書けばよいでしょうか?

Subを次のように始めたいです。

Private Sub (
ByVal wbBrowserName As System.Windows.Forms.WebBrowser,
ByVal strUrl As String,
ByVal intWaitingTime as Integer,
ByRef intCompleteCount As Integer
)

よろしくお願い申し上げます。


●質問者: jjkkjpvb2008
●カテゴリ:コンピュータ インターネット
✍キーワード:as String sub URL VB.NET
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● freemann
●60ポイント ベストアンサー

次のようでどうでしょうか。

タイマーはデザイン画面で追加してます。

あと、指定された成功回数のカウンターをフィールドにしています。

また、読み込みがタイムアウトの場合の為のフラグを使っています。(ネーミングをblnTimeOutの方が良かったかも・・・

なぜこれが必要かというと、中止した時も完了のイベントが発生するようですので・・・

Public Class Form4

Private intCompleteCount As Integer = 0 '他のメソッドでも使用するのでフィールドにしました

Private blnCompleted As Boolean = True '読み込みがタイムアウトした時にはFalseに設定する

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim intWaitingTime As Integer = 3 'ダミーとして3秒としました

Me.ShowSite(Me.WebBrowser1, Me.TextBox1.Text, intWaitingTime, Me.intCompleteCount)

End Sub

'指定されたメソッドです

Private Sub ShowSite(ByRef wbBrowserName As WebBrowser, ByVal strUrl As String, ByVal intWaitingTime As Integer, ByRef intCompleteCount As Integer)

Me.Timer1.Interval = intWaitingTime * 1000 'ミリ秒に変換

Me.Timer1.Enabled = True

wbBrowserName.Url = New Uri(strUrl)

End Sub

Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'ウェブブラウザが完了した時の呼び出されるメソッドを登録

AddHandler Me.WebBrowser1.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf wbDocumentCompleted)

End Sub

Private Sub wbDocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)

If Me.blnCompleted Then

'タイマーがタイムアウトを告げる前に読み込みが完了した場合

Me.intCompleteCount += 1

Me.Timer1.Stop()

Me.Timer1.Enabled = False

MessageBox.Show("読み込み完了!")

Else

'タイムアウトの時は次回のためにフラグをリセットしておく

Me.blnCompleted = True

End If

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

'読み込みを中止する

Me.WebBrowser1.Stop()

'タイムアウトのフラグを設定

Me.blnCompleted = False

Me.Timer1.Enabled = False

MessageBox.Show("タイムアウトのため中断しました。")

End Sub

End Class

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ