我正在开发一个 Windows 窗体 UserControl,以使用 webBrowser 控件呈现一些 HTML 并与之交互。部分内容是一些单选按钮,我需要从我的控件中捕获点击事件。因此,在 webBrowser 的 DocumentCompleted 事件中,我将 onClick 事件附加到单选按钮。在我单击其中一个单选按钮之前,所有这些似乎都有效,似乎只有最后一个单选按钮实际上附加了事件,即使我已经单步执行了代码并且每个单选按钮都附加了委托。
这是我用来将委托附加到 HtmlElement 的 lambda。
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}" />