2010-10-27 2 views
1

Pensez "Firebug", mais entièrement à partir de C#.Comment puis-je obtenir une référence de handle ou d'objet à un HtmlElement à partir d'un contrôle WebBrowser HtmlDocument?

J'ai un contrôle WebBrowser pour lequel j'ai construit un arbre DOM dans un TreeView. J'aimerais pouvoir définir un lien entre chaque élément DOM dans TreeView et son HtmlElement correspondant dans le document de WebBrowser de sorte que lorsque le nœud de l'arbre est cliqué, l'élément correspondant dans le document est mis en surbrillance. Mais, bien sûr, la seule disponibilité en surface pour l'accès aux éléments est GetElementById(), GetElementFromPoint() et GetElementsByTagName(). Et, bien sûr, toutes les pages Web n'ont pas d'ID ou de noms associés. Et puisque dans l'expérience utilisateur de mon application, l'utilisateur ne cliquera pas sur le WebBrowser, mais TreeView, je n'ai pas non plus accès à un point. J'expérimente différentes options que j'ai trouvées dans l'API maintenant. Mais ce serait génial si quelqu'un a de l'expérience dans ce domaine. Je n'arrive pas à trouver de détails sur le web n'importe où.

Merci d'avance!

Répondre

1

Personnellement, j'utiliserais une bibliothèque JavaScript telle que JQuery pour effectuer une telle tâche. Cette bibliothèque est facile à utiliser et de nombreux exemples/plug-ins sont disponibles (http://jquery.com). L'utilisation de JQuery vous permet non seulement d'utiliser des ID, mais aussi de les récupérer par classe CSS, type d'ancre, etc. Essentiellement, tout ce que vous pouvez extraire de HTML/CSS, vous pouvez tirer avec JQuery.

Si vous souhaitez gérer un HtmlElement à partir du code-behind, vous devez essentiellement lui attribuer un ID et spécifier l'attribut RUNAT. Par exemple:

<textarea id="bodyText" runat="server"></textarea> 

Espérons que cela aide d'une certaine manière!

+0

J'ai essayé d'ajouter le serveur runat ainsi qu'une référence de gestionnaire onclick, mais le gestionnaire avec ce nom dans mon code-behind n'est pas atteint. –

+1

[HtmlElement] (https://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlelement (v = vs.110) .aspx) n'a pas d'événement click. Cependant, certains des contrôles dans [System.Web.UI.HtmlControls] (https://msdn.microsoft.com/fr-fr/library/system.web.ui.htmlcontrols (v = vs.110) .aspx) font avoir des événements de clic, vous pouvez être en mesure de tirer parti. –

0

Avez-vous essayé la propriété All?

Questions connexes