2008-08-07 10 views
14

j'ai un programme WinForms écrit sur .NET 2 qui héberge un contrôle WebBrowser et rend les pages asp.net à partir d'un serveur connu. Je voudrais être capable de faire glisser, disons, un nœud d'arbre depuis une vue arborescente dans mon application winforms vers un emplacement spécifique dans la page Web hébergée et d'y déclencher un événement javascript. Actuellement, je peux implémenter l'interface IDocHostUIHandler et obtenir des événements glisser-déposer de \ sur le contrôle du navigateur, puis appelez Navigate("javascript:fire_event(...)") sur le contrôle d'exécuter un script sur la page. Cependant, je veux que cela fonctionne seulement quand je dépose des données sur une partie spécifique de de la page. Une solution, je suppose, serait de mordre la balle et écrire un plugin de navigateur personnalisé sous la forme d'un contrôle ActiveX, l'intégrer à l'endroit où je veux passer et laisser implémenter les interfaces drag \ drop nécessaires .glisser-déposer à un contrôle du navigateur hébergé

Est-ce que cela fonctionnerait? Y a-t-il une approche plus propre? Puis-je profiter du fait que le contrôle du navigateur est hébergé dans mon application et fournir un niveau d'interaction supplémentaire?

Répondre

2

Jetez un coup d'oeil au projet BrowserPlus avec Yahoo.

On dirait qu'ils ont construit une boîte à outils pour que vous ne devez pas faire le travail graveleuse d'écrire le navigateur vous plugin.

1

Si vous pouvez trouver en position écran de la partie de la page qui vous intéresse, vous pouvez comparer cela avec la position de la souris lorsque vous recevez l'événement drop. Je ne suis pas sûr que ce soit pratique si vous pouvez obtenir l'information sur le DOM ou autres joyeusetés.

Comme alternative, vous pouvez mettre en œuvre les événements de la souris sur le bit de la page en utilisant javascript?

Questions connexes