基本上,我需要在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?。
欢迎任何有关如何实现这一目标的想法。谢谢。
答案 0 :(得分:4)
答案 1 :(得分:1)
尝试绘制不适用于WebBrowser,我认为您已经使用的FormElement.Style是可行的方法。