📚
VSでhtmlを表示し、クリックした要素を取得するサンプル備忘録
using System.Diagnostics;
using mshtml;
using System;
using System.IO;
using System.Windows.Forms;
namespace texteditor
{
public partial class Form1 : Form
{
// WebBrowserコントロールの作成
WebBrowser webBrowser = new WebBrowser();
public Form1()
{
InitializeComponent();
InitializeWebBrowser();
// Formクラスに追加
}
private void InitializeWebBrowser()
{
webBrowser.Dock = DockStyle.Fill;
this.Controls.Add(webBrowser);
//ここに好きなファイルパスを指定してね。
string html = File.ReadAllText("C://Users//username//Downloads//write_test.txt");
webBrowser.DocumentText = html;
webBrowser.Document.Click += WebBrowser_Document_Click;
}
private void WebBrowser_Document_Click(object sender, HtmlElementEventArgs e)
{
if (webBrowser.Document == null) return;
// クリック位置の要素を取得
IHTMLDocument2 doc = webBrowser.Document.DomDocument as IHTMLDocument2;
IHTMLElement element = doc.elementFromPoint(e.ClientMousePosition.X, e.ClientMousePosition.Y) as IHTMLElement;
if (element != null)
{
// 要素の情報を取得
string tagName = element.tagName;
string innerText = element.innerText;
string innerHTML = element.innerHTML;
string outerHTML = element.outerHTML;
string classList = element.className;
Debug.WriteLine($"要素情報:");
Debug.WriteLine($"タグ名: {tagName}");
Debug.WriteLine($"テキスト: {innerText}");
Debug.WriteLine($"内部HTML: {innerHTML}");
Debug.WriteLine($"外部HTML: {outerHTML}");
Debug.WriteLine($"クラス名一覧: {classList}");
// 特定の属性があれば取得
if (element.getAttribute("href") != null)
{
Debug.WriteLine($"リンク先: {element.getAttribute("href")}");
}
if (element.getAttribute("id") != null)
{
Debug.WriteLine($"ID: {element.getAttribute("id")}");
}
if (element.getAttribute("class") != null)
{
Debug.WriteLine($"クラス: {element.getAttribute("class")}");
}
}
}
}
}
Discussion