附件:http://files.cnblogs.com/xe2011/Webbrowser_Document_IsModified.rar
该文档已被修改,是否保存修改结果?
是:保存修改结果
否:放弃修改结果
取消:仍打开该文档
触发这个对话框方法
初始化
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("about:blank");
webBrowser1.Document.Write( "<html><head><title>未命名</title></head><body style=\"margin: 5px\"></body></html>");
webBrowser1.Document.ExecCommand("EditMode", false, true);
}
加载完成后 在WEBBROWSER中随意输入任何字符 如123
然后单击按钮1
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("qq.com");
}
在执行 webBrowser1.Navigate("qq.com");这句前就会弹出
解决方法
除了第一次初始化使用 webBrowser1.Navigate 方法外,以后打开文件全用 webBrowser1.Document.Write的方法加载文档(通常是本地的HTML文件,这符合HTML编辑器) 。
这样 这个对话框是不会再出现的,即使内容改变了
private void Form1_Load(object sender, EventArgs e)
{
string HTML_TEXT = "<html><head><title>未命名</title></head><body style=\"margin: 5px\"></body></html>";
webBrowser1.Navigate("about:blank");
webBrowser1.Document.OpenNew(true);
webBrowser1.Document.Write(HTML_TEXT);
webBrowser1.Document.Focus();
webBrowser1.Document.ExecCommand("EditMode", false, true);
IsModified = false;
}
加载文档
public void LoadFromFile(string htmfilename)
{
webBrowser1.Document.OpenNew(true);
string html = File.ReadAllText(htmfilename, Encoding.GetEncoding(webBrowser1.Document.Encoding));
webBrowser1.Document.Write(html);
}
保存文档
public void SaveToFile(string htmfilename)
{
File.WriteAllText(htmfilename,
webBrowser1.DocumentText,
Encoding.GetEncoding(webBrowser1.Document.Encoding));
}
文档内容是否改变
该文档已被修改,是否保存修改结果 获得文档内容是否改变,要比屏蔽它有更重要的意义
定义一个字符串变量 s
string s = webBrowser1.DocumentText;
在一个定时器中判断
如果是下面条件成立 就表示内容已经改变了
webBrowser1.DocumentText != s
设置内容为没改变
s = webBrowser1.DocumentText;
源码
using System;
using System.Text;
using System.Windows.Forms;
using mshtml;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string HTML_TEXT = "<html><head><title>未命名</title></head><body style=\"margin: 5px\"></body></html>";
webBrowser1.Navigate("about:blank");
webBrowser1.Document.OpenNew(true);
webBrowser1.Document.Write(HTML_TEXT);
webBrowser1.Document.Focus();
webBrowser1.Document.ExecCommand("EditMode", false, true);
IsModified = false;
}
private void NewDocument()
{
string HTML_TEXT = "<html><head><title>未命名</title></head><body style=\"margin: 5px\"></body></html>";
webBrowser1.Document.OpenNew(true);
webBrowser1.Document.Write(HTML_TEXT);
webBrowser1.Document.Focus();
webBrowser1.Document.ExecCommand("EditMode", false, true);
IsModified = false;
}
bool __modified = false;
bool firsttime = true;
private string s ="";
/// <summary>
/// Webbrowser文档内容是否被修改
/// </summary>
public bool IsModified
{
get
{
return __modified;
}
set
{
__modified = value;
if (value == false)
s = webBrowser1.DocumentText;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
#region firsttime 说明
/*
这是我的给的HTML
html><head><title>未命名</title></head><body style=\"margin: 5px\"></body></html>
而实际出来的HTML是这样
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>未命名</TITLE>
<META content="text/html; charset=unicode" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 11.00.9600.16384"></HEAD>
<BODY style="MARGIN: 5px"></BODY></HTML>
*/
#endregion
if (firsttime == true)
{
s = webBrowser1.DocumentText;
firsttime = false;
}
//test
if (webBrowser1.DocumentText != s)
{
Text = "内容已被修改";
richTextBox2.Text = webBrowser1.DocumentText;
}
else
{
Text = " Form1 ";
richTextBox1.Text = webBrowser1.DocumentText;
}
//getmodified
__modified = (webBrowser1.DocumentText != s);
}
//set modify false
private void button1_Click(object sender, EventArgs e)
{
s = webBrowser1.DocumentText;
}
private void button2_Click(object sender, EventArgs e)
{
if (IsModified)
{
DialogResult d = MessageBox.Show("文档已被修改,是否保存", "编辑器", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (d == DialogResult.Yes)
{
MessageBox.Show("File have been saved!");
}
}
NewDocument();
}
private void button3_Click(object sender, EventArgs e)
{
webBrowser1.Document.ExecCommand("EditMode", false, true);
}
private void button4_Click(object sender, EventArgs e)
{
webBrowser1.Document.ExecCommand("BrowseMode", false, true);
s = webBrowser1.DocumentText;
}
}
}
新建文档
打开文档
保存文档
另存文档
12.1 文档相关 Webbrowser 该文档已被修改,是否保存修改结果