zoukankan      html  css  js  c++  java
  • 12.1 文档相关 Webbrowser 该文档已被修改,是否保存修改结果

     
     
    该文档已被修改,是否保存修改结果?
    是:保存修改结果
    否:放弃修改结果
    取消:仍打开该文档
     
     
    触发这个对话框方法
     
    初始化
            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));
            }  
     
     
     
    文档内容是否改变
    这有个问题:当文档中的内容非常多时 由于每隔100毫秒就判断一次 这会使程序一卡一卡的
    该文档已被修改,是否保存修改结果 获得文档内容是否改变,要比屏蔽它有更重要的意义
     
    定义一个字符串变量 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;
            }
        }
    }
     
     
     
     
    新建文档
     
    打开文档
     
    保存文档
     
    另存文档
     





  • 相关阅读:
    实习第一天
    使用epublib解析epub文件(章节内容、书籍菜单)
    jdk1.8以前不建议使用其自带的Base64来加解密
    java学习-AES加解密之AES-128-CBC算法
    java学习-sha1散列算法
    日、周、月活跃用户数,用户流失率
    java学习-java.lang.Math随机数生成
    AndroidStudio报错Software caused connection abort: recv failed
    java学习-java.lang一Number类
    jdk内置类javax.imageio.ImageIO支持的图片处理格式
  • 原文地址:https://www.cnblogs.com/xe2011/p/3822981.html
Copyright © 2011-2022 走看看