質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

1回答

3593閲覧

WebBrowserでの画面遷移(.NET)

KKK_

総合スコア29

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

0グッド

0クリップ

投稿2017/05/23 09:12

VisualStudio2008にてフォーㇺにWebBrowserを配置し
いくつかのページを遷移するプログラムを作成したいです。

クリックイベントを複数回に分ければ実現できたのですが
1つのイベント内で処理を行いたいです。

例としては下記のボタン2クリック⇒ボタン3クリックの流れで行いたいのですが、
①の箇所に②を書くと、前回ページの情報が取得されてしまいます。

何か、いい方法はないでしょうか?

コード Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click flg = True Dim all As HtmlElementCollection = WebBrowser1.Document.All Dim forms As HtmlElementCollection = all.GetElementsByName("OP_OSA0020_002_22Form") forms(0).InvokeMember("submit") ' フォームのサブミット Application.DoEvents() Do Do Application.DoEvents() Loop While WebBrowser1.IsBusy Or WebBrowser1.ReadyState <> WebBrowserReadyState.Complete Application.DoEvents() Loop While WebBrowser1.IsBusy Or WebBrowser1.ReadyState <> WebBrowserReadyState.Complete End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 'ボタンをクリック Click_Tag("a", "linkBtn js-weightLimitBtn") End Sub 'タグ、クラス名を指定してクリック Private Sub Click_Tag(ByVal TagName As String, ByVal ClassNames As String) Dim theElementCollection As HtmlElementCollection = Nothing・・・・・② '指定タグの情報をリストで取得 theElementCollection = WebBrowser1.Document.GetElementsByTagName(TagName) 'リストのタグ情報を回す For Each curElement As HtmlElement In theElementCollection '指定のクラス名かどうか確認する If curElement.GetAttribute("classname").ToString = ClassNames Then '指定のクラス名であれば、次の処理を行う 'クリック curElement.InvokeMember("Click") '指定クラス名の操作が完了したら、処理を終了する Exit For End If Next End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KKK_

2017/05/23 12:50

失礼しました。 Loop While WebBrowser1.IsBusy Or WebBrowser1.ReadyState <> WebBrowserReadyState.Completeのあとです。
guest

回答1

0

おそらくですが、

Loop While WebBrowser1.IsBusy Or WebBrowser1.ReadyState <> WebBrowserReadyState.Complete

の判定条件にURLとか遷移先のページと確実に判定できる情報を追加してみてください。

あとは実装が変わってしまいますが、WebBrowserコントロールのDocumentCompletedイベントで現在のページを判定して、そこでURL等から2ページと判定できたなら2ページ目の処理、3ページ目なら3ページ目の処理をするというような方法もあります。

投稿2017/05/30 15:58

hmmm

総合スコア818

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問