2008-08-07 11 views
14

Ich habe ein WinForms-Programm auf .NET 2 geschrieben, das ein Webbrowser-Steuerelement hostet und asp.net-Seiten von einem bekannten Server rendert.Ziehen und Ablegen zu einem gehosteten Browser Steuerelement

Ich möchte in der Lage sein, einen Baumknoten aus einer Baumansicht in meiner Winforms-App in einen bestimmten Ort auf der gehosteten Webseite zu ziehen und dort ein Javascript-Ereignis auslösen zu lassen. Derzeit kann ich die IDocHostUIHandler Schnittstelle implementieren und Drag & Drop-Ereignisse auf dem Browser-Steuerelement erhalten, dann Navigate("javascript:fire_event(...)") auf dem Steuerelement aufrufen, um ein Skript auf der Seite auszuführen. Ich möchte das jedoch nur funktionieren, wenn ich Daten auf einem spezifischen Teil der Seite ablege.

Eine Lösung, nehme ich an, wäre es, in den sauren Apfel zu beißen und ein benutzerdefiniertes Browser-Plugin in Form eines ActiveX-Steuerelements zu schreiben, das an dem Ort einzubetten, an den ich ablegen möchte und das die benötigten Drag & Drop-Interfaces implementieren lässt .

Würde das funktionieren? Gibt es einen saubereren Ansatz? Kann ich die Tatsache ausnutzen, dass die Browsersteuerung in meiner App gehostet wird und weitere Interaktionsmöglichkeiten bietet?

Antwort

2

Werfen Sie einen Blick auf das Projekt BrowserPlus bei Yahoo.

Es sieht so aus, als ob sie ein Toolkit gebaut haben, damit Sie nicht die krude Arbeit machen müssen, das Browser-Plugin selbst zu schreiben.

1

Wenn Sie die Bildschirmposition des Teils der Seite herausfinden können, an dem Sie interessiert sind, können Sie dies mit der Position der Maus vergleichen, wenn Sie das Drop-Ereignis erhalten. Ich bin nicht sicher, wie praktisch das ist, wenn Sie die Informationen aus dem DOM oder was auch immer bekommen können.

Als Alternative könnten Sie die Mausereignisse auf dem Bit der Seite mit Javascript implementieren?