• 締切済み

C#のNavigateメソッドの質問です

昨日はじめてC#を触った初心者です。 C# Windows フォーム アプリケーションを作成しております。 作りたいアプリはあるページを移動しながらそれぞれのリンクを取得していくアプリです。 いろいろ調べながら作成したソースを以下に記します。 private void button3_Click(object sender, EventArgs e) { int i = 1; String stView = ""; String url=""; String num = i.ToString(); while (i<=10) { num = i.ToString(); url = "http://...........page=" + num; //(←ここに取得したいアドレスが入ります) webBrowser1.Navigate(new Uri(url)); // 現在のページ内リンクのコレクション取得 HtmlElementCollection hecList = webBrowser1.Document.Links; // リンクのコレクションからURLリスト文字列作成 foreach (HtmlElement elm in hecList) { // HTML要素のhref(リンク先)属性処理 if (elm.GetAttribute("href") != null) { stView += elm.GetAttribute("href").ToString(); stView += "\r\n"; } } i++; } richTextBox1.Text = stView; } これでデバッグしてみたのですがNavigateのあとのDocumentが変わってくれません。 どのようにすればよいかアドバイスをお願いいたします。

  • baooo
  • お礼率100% (5/5)

みんなの回答

回答No.1

> webBrowser1.Navigate(new Uri(url));  の後に  webBrowser1.Refresh(); を入れてみてはどうですか?

baooo
質問者

お礼

ご回答ありがとうございます。 アドバイス通り入れてみたのですが駄目でした。 どうやらbutton3_Clickを抜けてからじゃないと更新されないようです。 別な方法を考えてみます。

関連するQ&A

  • なぜNavigateは候補に表示されないのでしょう

    なぜNavigateは候補に表示されないのでしょうか? フォームを作成し、 ツールボックス→[コントロールの選択]で Microsoft Web Browserをクリックしてフォーム上に設置しました。 そしてVBA画面のForm_Loadイベントで Me.WebBrowser1.Navigate URL を記述しようと思い Me.WebBrowser1.nと入力してもNameしか出てきません。 なぜNavigateは候補に表示されないのでしょうか? オブジェクトブラウザでNavigateを検索してみると [SHDocVw.WebBrowser のメンバ] としてヒットするので、 Me.WebBrowser1.nと入力したあとに表示されても良い気がするのですが・・・ Navigateのスペルは覚えにくいので候補が出たらいいなーと思っています。 ご教授よろしくお願いします。

  • C# Webブラウザコントロールの質問

    C# Webブラウザコントロールで現在表示されてるURLを読み取って 表示を変えようと試みていますが上手くいきません。 string strURL = webBrowser1.Url.ToString(); if (strURL == "http://google.com"); { webBrowser1.Navigate("http://yahoo.co.jp"); } 上記だと現在がグーグルならヤフーに切り替えという 例ですが処理されません。 2行目の「;」を入れると「emptyステートメントが間違っている 可能性があります」と警告も出ています。 「;」を省くと警告もエラーも出ませんが、処理も上手くいきません。 色々試しましたが暗礁に乗り上げている状態です。 是非、お知恵を貸してください。

  • NavigateとClickは動作として同じですか

    objIE.Navigate と objIE.Document.Links(i).Click は動作として同じですか? VBAで Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.goo.ne.jp/" Set objIE = Nothing End Sub のようにNavigateしてURLを表示するのと、 表示されたサイトのリンクを objIE.Document.Links(i).Click でクリックしてページを表示させるのは動作としては同じですか? HTMLやjavaスクリプトについてよくわからないのですが もしかして objIE.Document.Links(i).Click しないと動作しないなどはありますか? そしたらNavigateでもClickでもURLを開く事が可能なら、Clickした方がよいのでしょうか?

  • WebBrowserにてsubmitの前にnavigateしてしまう

    いつもお世話になっております。 VB2005ユーザーです。 WebBrowser内の"submit"を押したあと、違うページに行きたいのですが、 "submit"を押す前に"Navigate"で指定しているページに行ってしまいます。 このようなコードを書いています。 With WebBrowser1 .Navigate("最初のURL") Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete System.Windows.Forms.Application.DoEvents() Loop .Document.Forms(0).InvokeMember("submit") Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete System.Windows.Forms.Application.DoEvents() Loop .Navigate("次の指定URL") Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete System.Windows.Forms.Application.DoEvents() Loop 「指定URL」は"submit"により新しいHTMLが生まれるので、その後の作業のためにどうしても"submit"を押したいのですが、上のようなコードですと先に「指定URL」に行ってしまいます。 "submit"をクリックせず、無視してしまうのです。 Navigate("次の指定URL")を外せばクリックしてくれるのですが・・・。 WebBrowserを完全に待機させる方法などが必要なのでしょうか? 宜しくご教授のほどお願い致します。

  • C# 文字列型のhtmlから要素を取得したい

    textBox1.Text = "<li>aaaaa</li><a id="link" href="http://yahoo.co.jp" >bbbbb</a><p>ccccc</p>"; WebBrowser webbrowser = new WebBrowser(); webbrowser.DocumentText = textBox1.Text; HtmlElementCollection elements = webbrowser.Document.GetElementsByTagName("a"); foreach (HtmlElement element in elements){ if (element.GetAttribute("id") == "link"){ str = element.GetAttribute("href"); } } MessageBox.Show(str); このようにソースを書いたのですが、http://yahoo.co.jpをポプアップで表示することができません。 webBrowserに表示しているサイトのHTMLに対して行うときはほとんど同じ方法で取得ができるので、文字列に原因があるだろうということはわかるのですが、何がいけないかがイマイチわかりません。 ステップ実行したところ、foreachの中にはいらないようです。なぜ入らないのでしょうか?どうすればはいるのでしょうか? よろしくおねがいします。

  • C# クッキーを使ってウェブブラウザを表示したい

    C#プログラミングの質問です ニコニコ動画でCookieGetterSharpを使用してCookieを取得したのですが、取得したCookieを使ってwebBrowser1を表示したいのですが、どうやれば良いのかわかりません できればC#でご教授お願い致します string p = "http://www.nicovideo.jp/my"; webBrowser1.Navigate(p);

  • Excel VBA :URLの中で変数を使用する方法

    Excel VBAで、連続したURLが存在しているかどうかを確認したいと 思っております。 そこで、下記のように変数を作成しURLを確認するようにしたのですが、 Dim i As Long For i = 1 to 1000 Me.WebBrowser1.Navigate "http://*****.co.jp/"+(i)+".html" や Me.WebBrowser1.Navigate "http://*****.co.jp/(i).html" などとしたのですが、どうしてもiを変数として受け取ってくれないの です。どのようにすれば(i)を変数として認識するか、教えていただき たいのですが、よろしくお願いいたします。

  • C# WebRequestでcookieの設定

    webbrowserで取得したcookieをwebrequestに設定してアクセスする事を考えております。 webBrowser1.Document.Cookie;で取得したcookieをそのままwebrequestに設定しようとすると、 string型ではダメと言われてしまいます。 どのようにすれば良いか、ご教授頂ければありがたいです。

  • C# htmlの一部の文字取得

    C#のwebBrowserで表示されているtextを表示させたいです。 htmlが <div class="AAA"> BBB </div> となっており、BBBのtextを取得したい場合、 HtmlElementCollection elem = webBrowser0.Document.GetElementsByTagName("div");   foreach (HtmlElement element in elem)   {    if (element.GetAttribute("class") == "AAA")  {  str = element.InnerText;  } } と、しましたが、上手く取得出来ません。 ご教授頂ければ助かります。

  • 外部JSファイルでランダム表示と一度クリックで2箇所リンクのものを組み合わせたいんです。

    初心者で申し訳ありません。 外部JSファイルでランダム表示をつかっているのですが、リンクの箇所で一回のクリックで2箇所にリンクするのを組み合わせたいと思ってます。 ランダム表示 <!-- //並べ替え表示スクリプト function Random(x) { //fは掲載する広告数 f =3; var Num = new Array(f - 1); var Chk = new Array(f - 1); var Mess = new Array(f - 1); //***ここに広告表示HTMLの配列作成 Mess[0] = ' <A href="http://aa.com" target="_blank">testtest</A>'; Mess[1] = ' <A href="http://bb.com" target="_blank">testtest</A>'; Mess[2] = ' <A href="http://cc.com" target="_blank">testtest</A>'; //***ランダムで0~f-1の値を並べ替え for (i=0;i<f;i++) // { Num[i] = Math.floor(Math.random()*f); if (Chk[Num[i]] == 1){ while(Chk[Num[i]] == 1){ Num[i] = Math.floor(Math.random()*f); } Chk[Num[i]] = 1; } else { Chk[Num[i]] = 1; } } //HTML作成部分 for (i=0;i<x;i++) // { document.write(Mess[Num[i]]); document.write(Mess[Num[i+1]]); document.write(Mess[Num[i+2]]); } } //--> 上のランダムに出力されるリンクを下のような形みたいに、それぞれのURLが1クリックで2箇所リンクされるようにしたいです。 <A href="http://aa.com" target="_blank" onclick="window.open('http://dd.com')" >test</A> もしお分かりの方がいたら何卒よろしくお願いします。 もしわかりづらかったらごめんなさい。