首页 > 代码库 > 12.1 文档相关 Webbrowser 该文档已被修改,是否保存修改结果

12.1 文档相关 Webbrowser 该文档已被修改,是否保存修改结果

 
 附件:http://files.cnblogs.com/xe2011/Webbrowser_Document_IsModified.rar
 
该文档已被修改,是否保存修改结果?
是:保存修改结果
否:放弃修改结果
取消:仍打开该文档
 
 
触发这个对话框方法
 
初始化
        private void Form1_Load(object senderEventArgs e)
        {
            webBrowser1.Navigate("about:blank");
            webBrowser1.Document.Write"<html><head><title>未命名</title></head><body style=\"margin: 5px\"></body></html>");
            webBrowser1.Document.ExecCommand("EditMode"falsetrue); 
        } 
 
加载完成后 在WEBBROWSER中随意输入任何字符  如123
 
然后单击按钮1 
        private void button1_Click(object senderEventArgs e)
        {
 
            webBrowser1.Navigate("qq.com");
        } 
在执行  webBrowser1.Navigate("qq.com");这句前就会弹出 
 
 
 
 
 
 
解决方法 
 
除了第一次初始化使用 webBrowser1.Navigate 方法外,以后打开文件全用 webBrowser1.Document.Write的方法加载文档(通常是本地的HTML文件,这符合HTML编辑器) 。
这样 这个对话框是不会再出现的,即使内容改变了
        private void Form1_Load(object senderEventArgs 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"falsetrue);
            IsModified = false;
        }  
 
加载文档
 
        public void LoadFromFile(string htmfilename)
        {
            webBrowser1.Document.OpenNew(true);
            string html = File.ReadAllText(htmfilenameEncoding.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;  
 
123.gif
源码
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 senderEventArgs 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"falsetrue);
            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"falsetrue);
            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 senderEventArgs 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 senderEventArgs e)
        {
            s = webBrowser1.DocumentText;
        }
 
       
 
        private void button2_Click(object senderEventArgs e)
        {
 
 
            if (IsModified)
            {
                DialogResult d = MessageBox.Show("文档已被修改,是否保存""编辑器"MessageBoxButtons.YesNoMessageBoxIcon.Question);
 
                if (d == DialogResult.Yes)
                {
                    MessageBox.Show("File have been saved!");
                }
 
            }
            NewDocument();
        }
 
        private void button3_Click(object senderEventArgs e)
        {
             webBrowser1.Document.ExecCommand("EditMode"falsetrue);
        }
 
        private void button4_Click(object senderEventArgs e)
        {
             webBrowser1.Document.ExecCommand("BrowseMode"falsetrue);
             s = webBrowser1.DocumentText;
        }
    }
}
 
 
 
 
新建文档
 
打开文档
 
保存文档
 
另存文档
 



来自为知笔记(Wiz)