4 Stimmen

Internet Explorer 9 RC stoppt meine WinForms WebBrowser-Steuerung daran zu arbeiten im Bearbeitungsmodus.

Mit der IHtmlDocument2.designMode Eigenschaft auf On gesetzt, um einen WebBrowser control, welcher auf einem Windows Forms Form gehostet wird, plötzlich in den Bearbeitungsmodus zu versetzen, funktionierte nicht mehr, nachdem Microsoft Internet Explorer 9 RC installiert wurde.

Frage:

Gibt es eine Möglichkeit, dies zu beheben?

Ich habe bereits versucht, mit dem Doctype oder dem EmulateIE7 Meta-Tag herumzuspielen, aber ohne Erfolg.

(Ein Beispiel wäre dieses Projekt)


Update 2011-02-21:

Wie Eric Lawrence vorschlug, habe ich das "Zeta" Beispiel angepasst, um den Dokumententext festzulegen, bevor der Bearbeitungsmodus festgelegt wird.

Leider ist es mir auch so nicht gelungen, in den Design-Modus zu wechseln.


Update 2011-02-24:

Teile der Diskussion finden auch in Erics Blog statt.


Update 2011-02-26:

Was ich derzeit erlebe, ist, dass das Verhalten anscheinend für HTTP URLs und für Inhalte, die über WebBrowser.DocumentText hinzugefügt wurden, unterschiedlich ist.

Erste Tests scheinen diese Annahme zu bestätigen.

Ich werde nun eine Lösung um diese Annahme herum entwickeln und Updates sowie einen Proof-of-Concept hier veröffentlichen.


Update 2011-02-26 (2):

Ich habe nun einen Proof-of-Concept mit einem eingebauten Webserver erstellt, von dem ich glaube, dass er auch gut mit IE 9 funktioniert. Falls jemand möchte, kann er herunterladen und testen, ob es funktioniert, und mir ein kurzes Feedback geben. Dann kann ich den Quellcode dafür aufräumen und veröffentlichen.


Update 2011-02-26 (3):

Bisher kein Feedback, ich habe den HTML Edit Control Artikel und das Demo noch auf Code Project aktualisiert.


Update 2011-03-16:

Nachdem Internet Explorer 9 gestern veröffentlicht wurde, haben wir unsere Hauptprodukte aktualisiert, um die Idee mit dem integrierten Webserver zu verwenden, wie im HTML Edit Control Artikel beschrieben.

Nach fast einem Monat Test bin ich der Meinung, dass es ganz gut funktioniert.

Sollten Sie in Zukunft Probleme mit diesem Ansatz haben, hinterlassen Sie bitte Ihre Kommentare hier, damit ich diese überprüfen und beheben kann.

1 Stimmen

Ich habe dies im IE 9 RC Feedback protokolliert, zusammen mit einem Link zu dieser Seite. Ich habe das gleiche Problem mit meinem bestehenden Code, der auf etwas bei Code Project basiert. Ich denke dies: codeproject.com/KB/edit/editor_in_windows_forms.aspx

0 Stimmen

@PeteT Kannst du hier einen Link zur IE 9 RC Feedback-Seite deines Beitrags posten?

1 Stimmen

Ja, sicher, ich habe das Feedback über das IE 9-Menü eingegeben, das schließlich auf ihrer Connect-Website landet: connect.microsoft.com/IE/feedback/details/648138/…

1voto

Prads Punkte 71

Es ist behoben, wenn die Eigenschaft nach dem Laden des Dokuments festgelegt wird

private void DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{

    IHTMLDocument2 Doc = Document.DomDocument as IHTMLDocument2;
    Doc.designMode = @"On";
}

0 Stimmen

Danke, @Prads - In meinen Tests wurde der Inhalt gelöscht, als ich den designMode auf On gesetzt habe. Vielleicht werde ich es noch einmal versuchen.

0voto

Uwe Keim Punkte 38139

Gestern wurde endlich Internet Explorer 9 RTM veröffentlicht.

Ich habe noch einige kleine Anpassungen an meiner Steuerung vorgenommen, aber im Grunde scheint die Idee mit dem integrierten, kleinen Webserver recht gut zu funktionieren.

Die Lösung befindet sich in diesem Code Project-Artikel:

 

Zeta HTML Edit Control
  Eine kleine Wrapper-Klasse um das Windows Forms 2.0 WebBrowser-Control

Dies war die einzige Lösung, die für mich funktioniert hat.

Ist es in Ordnung, meine eigene Frage zu beantworten und meine Antwort auch als "beantwortet" zu markieren?!?

0voto

Ich konnte dies auch zum Laufen bringen, indem ich folgendes im DocumentCompleted-Ereignis verwendet habe:

IHTMLDocument2 Doc = browserControl.browser.Document.DomDocument as IHTMLDocument2;
if (Doc != null) Doc.designMode = @"On";

Vielen Dank an alle!

0 Stimmen

Benötigen Sie eine Bearbeitung des vorhandenen Inhalts oder nur eine leere bearbeitbare HTML-Steuerung?

0voto

user2015772 Punkte 1

Ich verwende den HTML-Editor-Control. Ich habe das Problem gelöst, indem ich das DocumentComplete-Ereignis hinzugefügt habe.

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    (((sender as WebBrowser).Document.DomDocument as IHTMLDocument2).body as HTMLBody).contentEditable = "true"; 
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X