Im Grunde muss ich jedes HTML-Dokument in WebBrowser Steuerelement und ermöglichen es den Benutzern, ein oder mehrere HTML-DOM-Elemente visuell auszuwählen (um ihre XPaths zu erhalten, aber das ist eine andere Geschichte).
Wenn Sie den Mauszeiger über ein Element bewegen, wird es mit der Farbe A hervorgehoben, und wenn Sie die Maus wegziehen, wird der visuelle Zustand wiederhergestellt.
Wenn Sie auf ein Element klicken, wird es mit der Farbe B hervorgehoben, und wenn Sie erneut auf ein Element klicken, wird sein visueller Zustand wiederhergestellt.
Zusammengefasst sollte es sich wie die FireBug Inspect Element Funktion verhalten, oder wie die Dapp-Fabrik Wählen Sie die Funktion Inhalt.
Ein naiver Ansatz wäre die Verwendung von HtmlElement.Style Eigenschaft wie im Beispiel unten, aber offensichtlich kann ich nicht, weil das Element könnte bereits die Grenze Stil in der gleichen Weise, in diesem Fall sollte es nicht auf MouseLeave entfernt werden eingestellt haben:
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;
[...]
}
Möglicherweise könnte ich dies erreichen, indem ich eine benutzerdefinierte CSS-Klasse setze/entferne (so wie man es im gleichen Fall mit JavaScript tun würde), aber HtmlElement scheint eine solche Eigenschaft nicht zur Verfügung zu stellen, und wie würde ich CSS-Klassendefinitionen überhaupt einfügen?
更新情報 : Es ist tatsächlich möglich, die CSS-Klasse mit HtmlElement.SetAttribute("className")
; zum Einfügen von CSS-Klassen, siehe zum Beispiel C#: Der beste Weg, um CSS in MSHTML-Instanz zu injizieren? .
Jede Idee, wie man dies erreichen kann, ist willkommen. Ich danke Ihnen.