WebBrowser クラスでクリックされたアンカーの URL を取得する
10 行でズバリ !! 簡単 WebBrowser の作成 (C#) 等で紹介されている WebBrowser クラス を使うと簡単にブラウザを作ることが出来ます。会社の業務で特殊な要件があり、「クリックされたアンカーの URL を取得するにはどうしたら良いか?」を調べていたら、C#トリビアルメモ2 (Webbrowserのリンクをクリックしたら既定のブラウザで開くようにする) に実装が書かれていたのでメモしておきます(若干、改変させて頂きました)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 | private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
this.webBrowser1.Document.Click += new HtmlElementEventHandler(Document_Click);
}
private void Document_Click(object sender, HtmlElementEventArgs e)
{
HtmlElement clickedElement = webBrowser1.Document.GetElementFromPoint(e.MousePosition);
string text = null;
string link = null;
if (clickedElement.TagName == "a" || clickedElement.TagName == "A")
{
text = clickedElement.OuterText;
link = clickedElement.GetAttribute("href");
}
else if (clickedElement.Parent != null)
{
if (clickedElement.Parent.TagName == "a" || clickedElement.Parent.TagName == "A")
{
text = clickedElement.Parent.OuterText;
link = clickedElement.Parent.GetAttribute("href");
}
}
if (link != null && link != "")
{
try
{
MessageBox.Show(text + "\n" + link);
e.ReturnValue = false;
}
catch
{
}
}
}
|
後半部分で "e.ReturnValue = false;" しているのは、URL だけ拾って実際のページ遷移はさせない為です。素直にページ遷移させるには、この部分を削除します。