C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: リンクをクリックしたときのイベントを取得したい


(過去ログ 76 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■45182 / inTopicNo.1)  リンクをクリックしたときのイベントを取得したい
  
□投稿者/ コロナ (1回)-(2010/01/05(Tue) 14:01:29)

分類:[C#] 

みなさんこんにちは。
WindowsXPとVC#2008でブラウザを作っています。
FormにwebBrowserを置いてみました。

リンクをクリックしたときのイベントを取得したいのですが、webBrowserのイベントフラグを見ても、見当たるものを見つけることができませんでした。
なにというイベントで取得したらよいか、アドバイスお願いします。

引用返信 編集キー/
■45184 / inTopicNo.2)  Re[1]: リンクをクリックしたときのイベントを取得したい
□投稿者/ ごう (78回)-(2010/01/05(Tue) 14:35:15)
BeforeNavigate または BeforeNavigate2 について調べてみてください。
引用返信 編集キー/
■45225 / inTopicNo.3)  Re[2]: リンクをクリックしたときのイベントを取得したい
□投稿者/ コロナ (2回)-(2010/01/06(Wed) 16:25:21)
ごうさん、早速ありがとうございました。
BeforeNavigate または BeforeNavigate2ということだったのですが、
http://vsug.jp/tabid/63/forumid/45/threadid/9273/scope/posts/Default.aspx
を見たら、Visual Studio 2005の場合は、Navigating イベントという記述があり、
次のように実装してみました。

string URL = http://〜〜;
private void Form_Load(object sender, EventArgs e){
webBrowser.Navigate(URL);
}

private void webBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e){
	if (e.Url.ToString() != URL){
		webBrowser.Navigate(e.Url.ToString());
	}
}

質問の意図としては、リンクをクリックしたときにそのURLを開きたい、ということでした。
しかしながら、この方法だと、方法がまずいのかもしれませんが、
いくつも問題が出ているようで、うまく動きません。
デバッグしてみたところ、次のようなことのようです。

(1)リンクをクリックしたときだけでなく、最初にページを開いたときもNavigatingの処理をする。
なるほど、NavigatingがWebページを開くときのイベントであるとすれば、
それはわからないではないが、なんかループしている気もする…。

(2)クリックしたときにイベントを取れると思ったのですが、
じっさいにはページ内のリンクをぜんぶ列挙してひとつひとつ処理しているみたい。
そのため、多数のリンクを含むページの場合、処理が終了しない。
ページ内に自分のページへのリンクがある場合、ループしてしまう。

回避策は、ifで条件を列挙する以外ないんでしょうか?
よろしくアドバイスお願いします。

引用返信 編集キー/
■45228 / inTopicNo.4)  Re[3]: リンクをクリックしたときのイベントを取得したい
□投稿者/ ヴァン (51回)-(2010/01/06(Wed) 17:10:16)
こんにちは。

No45225 (コロナ さん) に返信
> (1)リンクをクリックしたときだけでなく、最初にページを開いたときもNavigatingの処理をする。
> なるほど、NavigatingがWebページを開くときのイベントであるとすれば、
> それはわからないではないが、なんかループしている気もする…。
>
> (2)クリックしたときにイベントを取れると思ったのですが、
> じっさいにはページ内のリンクをぜんぶ列挙してひとつひとつ処理しているみたい。
> そのため、多数のリンクを含むページの場合、処理が終了しない。
> ページ内に自分のページへのリンクがある場合、ループしてしまう。
>
> 回避策は、ifで条件を列挙する以外ないんでしょうか?
> よろしくアドバイスお願いします。
>

これじゃループしまくりです。

見ていたページにサンプルコードが載ってますが、それを実装して
BeforeNavigate、BeforeNavigate2で処理してください。

あと、すでにNavigatingされてイベントが発生しているので、再度Navigateする必要はありません。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -