簡単な方法では、ブラウザのナビゲーションを使用することです。クリックすると、特別なURLにナビゲートできます。次に、Navigatingイベントを処理し、URLが特別なURLであれば、ナビゲーションをキャンセルしてデータを処理します。
public MainWindow()
{
InitializeComponent();
br.NavigateToString(@"<a href=""http://messages?id=12948""><img src=""F:\Temp\file12948.jpg"" id=""12948"" width=""180px"" ></a>");
br.Navigating += this.Br_Navigating;
}
private void Br_Navigating(object sender, NavigatingCancelEventArgs e)
{
if(e.Uri.Host == "messages")
{
MessageBox.Show(e.Uri.Query);
e.Cancel = true;
}
}
これは、HTMLを何らかの形で管理している場合に機能します。アンカーを追加しない場合は、JSからURLを設定することもできます。
編集
上記バージョンは、WPFアプリケーションのためのものです。リサイズバージョンは次のとおりです。
public Form1()
{
InitializeComponent();
webBrowser1.DocumentText = @"<a href=""http://messages?id=12948""><img src=""F:\Temp\file12948.jpg"" id=""12948"" width=""180px"" ></a>";
webBrowser1.Navigating += this.webBrowser1_Navigating;
}
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (e.Url.Host == "messages")
{
MessageBox.Show(e.Url.Query);
e.Cancel = true;
}
}
ページで任意のJavaScriptコードの可能性のある重複したくない場合は、[ネットウェブブラウザでクリックされた要素のIDを取得する方法](https://stackoverflow.com/q/41293979/11683)。 jsavascriptのクリックハンドラがうまくいけば、[WinForms - WebBrowserコントロールの中からC#アプリケーションコードを実行するにはどうすればいいですか?](https://stackoverflow.com/q/305915/11683)の重複が考えられます。 – GSerg
ありがとう、すでに見て、最初のものをテスト。それは私が探しているものであるマウスの左ボタンではなく、Webブラウザのコンテキストメニューを使用する必要があるようです。 – Rado
他に何も動作しない場合、JavaScriptのことがあります。ユーザーがIEでjavascriptを無効にしている可能性がある以外の欠点がありますか? – Rado