WinForms WebBrowser - FireBug检查类似元素的突出显示

时间:2011-01-22 18:25:47

标签: c# .net html winforms webbrowser-control

基本上,我需要在WebBrowser控件中加载任何HTML文档,并允许用户直观地选择一个或多个HTML DOM元素(以获取他们的XPath,但这是另一个故事)。

将一个元素悬停会用颜色A突出显示它,移动鼠标会恢复它的视觉状态。

单击一个元素将使用颜色B突出显示它,再次单击之前单击的元素将恢复它的可视状态。

总而言之,它应该像FireBug Inspect Element功能一样,或者像Dapp Factory选择内容功能一样。


一个天真的方法是使用HtmlElement.Style属性,如下例所示,但显然我不能,因为该元素可能已经以相同的方式设置边框样式,在这种情况下不应该删除在MouseLeave上:

void Document_MouseOver(object sender, HtmlElementEventArgs e)
{
    // what if e.FromElement.Style already contains "border: solid 1px Red;" ?
    e.FromElement.Style = "border: solid 1px Red; " + e.FromElement.Style;
    [...]
}

可能我可以通过设置/取消设置自定义CSS类来实现这一点(就像在相同的情况下使用JavaScript一样),但是HtmlElement似乎没有暴露这样的属性,我将如何注入CSS类定义无论如何?

更新:实际上可以使用HtmlElement.SetAttribute("className")设置CSS类;要注入CSS类,请检查例如C#: Best way to inject CSS into MSHTML instance?

欢迎任何有关如何实现这一目标的想法。谢谢。

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

尝试绘制不适用于WebBrowser,我认为您已经使用的FormElement.Style是可行的方法。