简体   繁体   中英

Problem using WebBrowser control as editor

I am currently working on a project where I am using a WebBrowser control as an editor. I have design mode turned on and it seems to be working. The issue im having is when I try to save the Document and load another it pops up the "This document has been modified." message. What I am trying to do is as simple as this

if (frontPage)
{
    frontPage = false;
    frontContent = webEditor.DocumentText;
    webEditor.DocumentText = backContent;
}
else
{
    frontPage = true;
    backContent = webEditor.DocumentText;
    webEditor.DocumentText = frontContent;
}

Like I said everytime I enter some text and run this code it just pops up a message saying its been modified and asks if I want to save. How can I get around this?

You should create the following function:

void ChangeAllowWebBrowserDrop() { webBrowser.AllowWebBrowserDrop = !webBrowser.AllowWebBrowserDrop; }

It should be called every time before you change DocumentText.

You could set

BodyHtml.  

Like this:

string newHTMLString="some html";
webBrowser1.Document.Body.InnerHtml = newHTMLString;

Worked for me .

You should create the following function:

void ChangeAllowWebBrowserDrop() {
    webBrowser.AllowWebBrowserDrop = !webBrowser.AllowWebBrowserDrop;
}

It should be called every time before you change DocumentText .

I have solved this problem so:

browser.Document.Write(string.Empty);  
browser.DocumentText="Your html code"; 

This is from this link: http://social.msdn.microsoft.com/Forums/vstudio/en-US/3a9c1965-8559-4972-95e1-da0e86cf87bb/webbrowser-strange-problem

Try this webEditor.ScriptErrorsSuppressed = true;

Make sure you have disabled Script Debugging in IE in case you've turned it on.

The way Windows Forms load a document stream (used by the DocumentText property) is to navigate away to about:blank, which triggers the document modified message, then load the stream in its DocumentComplete event handler.

Since you already have a document, you can skip the navigation and load the stream into the existing document directly via its IPersistStreamInit interface like Windows Forms does in its DocumentComplete event handler.

better solution is to write empty string before you actually assign your html code: WebBrowser1.Document.Write(string.Empty);
WebBrowser1.DocumentText = "your code";

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM