私は、WebBrowserコントロールを使用してHTMLをレンダリングおよび操作するために、WindowsフォームのUserControlに取り組んでいます。コンテンツの一部は、コントロール内からクリックイベントをキャプチャするために必要ないくつかのラジオボタンです。したがって、webBrowserのDocumentCompletedイベントで、ラジオボタンにonClickイベントをアタッチしています。ラジオボタンの1つをクリックするまで、これはすべて機能しているようです。コードをステップ実行し、各ラジオボタンにデリゲートがアタッチされている場合でも、実際には最後のラジオボタンのみがイベントをアタッチしているようです。
これは、デリゲートをHtmlElementにアタッチするために使用しているラムダです。
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("input"))
{
el.AttachEventHandler("onclick", (sender1, e1) => clickEventHandler(el, EventArgs.Empty));
}
}
public void clickEventHandler(object sender, EventArgs e)
{
Guid answerId;
var he = (HtmlElement)sender;
if (Guid.TryParse(he.Id, out answerId))
if (AnswerSelected != null)
AnswerSelected(answerId);
}
AnswerSelectedの委任とイベント
public delegate void HtmlControlAnswerEventHandler(Guid answerId);
public event HtmlControlAnswerEventHandler AnswerSelected;
入力ボタンの文字列。
<input type=radio id="{0}" name="answer" value="{1}" />