Domanda

Nel tentativo di martello togehter un WYSIWYG-edit in C # seguito alcuni esempi da qui e l'altro posto.

Im usando un browser web per lo stato di progettazione del redattore, ma ho bisogno di essere in grado di passare a "html-view", così ho usato un ricco casella di testo, e il mio tought stato per afferrare solo il contenuto dal browser web e impostare al RTB, e viceversa.

Funziona bene fino a quando cerco di rimettere il valore dal RTB nel browser web, quindi ho un "Questo documento è cambiato, vuoi salvare le modifiche" -alert e dopo che il browser web non accetterà nuovi contenuti.

Qualsiasi idea di cosa fare? O qualsiasi altro modo per gestire la soluzione im dopo?

il codice:

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";
        }
    }
}
}
È stato utile?

Soluzione

E 'una buona cosa per voi che ho speso troppo tempo di recente guardando a come il controllo WebBrowser e cose correlate funzionano: -)

Per fare ciò che si vuole, invece di

webBrowserWYSIWYG.DocumentText = rtbWYSIWYG.Text;

do

webBrowserWYSIWYG.Document.Write(rtbWYSIWYG.Text);

Mi auguro che aiuta. Funziona per me.

Modifica : Prova questo:

webBrowserWYSIWYG.Document.OpenNew(true);
webBrowserWYSIWYG.Document.Write(rtbWYSIWYG.Text);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top