2009-07-02 12 views
1

Ich versuche, eine WYSIWYG-Bearbeitung in C# zu hämmern, indem ich einige Beispiele von hier und anderen Orten befolge.C# WYSIWYG-Editor mit Webbrowser und richtextbox

Ich benutze einen Webbrowser für den Design-Zustand des Editors, aber ich muss in der Lage sein, zu "HTML-View" zu wechseln, so dass ich eine reiche Textbox verwendet habe, und meine Lehre war, einfach den Inhalt aus dem Webbrowser und setze es auf den rtb und umgekehrt.

Es funktioniert gut, bis ich versuche, den Wert von der Rtb in den Webbrowser, dann bekomme ich eine "Dieses Dokument hat sich geändert, möchten Sie die Änderungen speichern" -alert und danach wird der Webbrowser nicht akzeptieren neuer Inhalt.

Irgendeine Idee, was zu tun ist? Oder eine andere Möglichkeit, die Lösung im nach zu behandeln?

der Code:

namespace EmailAdmin 
{ 
    public partial class Form1 : Form 
    { 

    // global variables 
    private IHTMLDocument2 doc; 
    private int WYSIWYGviewState = 0; 

    public Form1() 
    { 
     InitializeComponent(); 

    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     // initiate web browser to design mode 
     webBrowserWYSIWYG.DocumentText = "<html><body></body></html>"; 
     doc = webBrowserWYSIWYG.Document.DomDocument as IHTMLDocument2; 
     doc.designMode = "On";    
    } 

    private void linkSwitchWYSIWYGview_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
    { 
     // determins viewstate 
     // is design view 
     if (WYSIWYGviewState == 0) 
     { 
      // set html view 
      WYSIWYGviewState = 1; 
      rtbWYSIWYG.Visible = true; 

      // populates the texteditor with html 
      rtbWYSIWYG.Text = webBrowserWYSIWYG.DocumentText; 

      // change label text 
      linkSwitchWYSIWYGview.Text = "View Design"; 


     } 
     // is html view 
     else if (WYSIWYGviewState == 1) 
     { 
      // set design view 
      WYSIWYGviewState = 0; 
      rtbWYSIWYG.Visible = false; 

      // populates the designer with html 
      webBrowserWYSIWYG.DocumentText = rtbWYSIWYG.Text; 

      // change label text 
      linkSwitchWYSIWYGview.Text = "View HTML"; 
     } 
    } 
} 
} 

Antwort

2

Es ist für Sie eine gute Sache ist, dass ich viel zu viel Zeit vor kurzem schauen, wie das WebBrowser-Kontrolle und damit verbundene Dinge :-)

arbeiten

verbracht haben zu tun, was Sie wollen, statt

webBrowserWYSIWYG.DocumentText = rtbWYSIWYG.Text; 

tun

webBrowserWYSIWYG.Document.Write(rtbWYSIWYG.Text); 

Ich hoffe, dass hilft. Für mich geht das.

bearbeiten: Versuchen Sie folgendes:

webBrowserWYSIWYG.Document.OpenNew(true); 
webBrowserWYSIWYG.Document.Write(rtbWYSIWYG.Text); 
+0

@ David Johnstone: Danke, es funktionierte! Immer noch das Problem damit .Document.Write(); fügt nur hinzu, ersetzt nicht, also wenn du mit "!" beginnst und zwischen den Ansichten hin und her wechseln, wird das Dokument mit 1 "wachsen!" jeder Schalter. Irgendwelche Gedanken? – Andreas

+0

Ich löste es und wollte über das schreiben: webBrowserWYSIWYG.Document.OpenNew (true); Als ich sah, dass du die Antwort aktualisiert hast, nochmals danke David – Andreas