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

附件: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;

}

}

}

新建文档

打开文档

保存文档

另存文档

来自为知笔记(Wiz)

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

时间: 2024-10-10 17:41:41

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

iOS OpenGLES 框架相关 24 篇文档排序整理

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. OpenGLES Use a compact, efficient subset of the OpenGL API for 2D and 3D

xml和xsd架构文档相关知识

1.使用架构(XSD)验证XML文件 2.使用自动生成工具: 工具目录:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools 工具名称:xsd.exe 使用帮助:生成xml架构文档xsd-->拷贝xml文件到工具目录下,打开命令工具,进入该目录,执行命令:xsd myFile.xml 生成xsd架构文档相关类-->执行命令:xsd /c/language:CS XSDSchemaFile.xsd 更多详细

[Swift通天遁地]七、数据与安全-(8)创建普通PDF文档和加密PDF文档

本文将演示使用开源类库实现创建普通PDF文档和加密PDF文档. 首先确保在项目中已经安装了所需的第三方库. 点击[Podfile],查看安装配置文件. 1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'PDFGenerator' 7 end 根据配置文件中的相关配置,安装第三方库. 在项目导航区,打开视

XML文档类型定义---DTD文档

DTD的作用 XML文档是一种元标记语言,即一种定义标记语言的语言.在XML中可以创建新的标记语言,这些新的标记语言(也叫标记集)要通过文档类型定义(Document Type Definitions,DTD)来定义.DTD文档是这些新的标记语言的法律性文档.如果XML文档的语法符,DTD的定义和规定,那么就称为一个合法的XML文档,否则就是非法的XML文档.合法的XML文档在实际应用中的地位很重要,因为只有合法的XML文档才能被应用软件有效地处理. DTD定义了文档的逻辑结构,规定了文档中所使

Atitit 项目文档规范化与必备文档与推荐文档列表

===========比较重要的必备文档========== 项目组名单通讯录( 包括项目组,客户沟通人等 需求文档 原型ui文档 开发计划表 项目源码与架构文档以及新结构文档 设计文档 (一般概要即可,重点模块单独详细设计) 数据库文档 注意事项 =========对开发比较重要的文档 Svn源码服务器账号密码 测试数据库账号密码信息 数据库sql脚本文件. 开发环境搭建文档 项目技术规范文档.(项目模式和产品模式有很多不同,需要单独分离) ======其他 测试说明文档 测试服务器部署账号信

Mongodb嵌套文档的修改-利用数组修改器更新数据

初学mongodb的可能和我一样有个疑问,mongodb是文档型的,那么如果一个文档嵌套另外一个文档,如果对这个嵌套文档进行增删改查呢. 就像如下这样:,如何对auther里面的name进行增删改查呢?这篇博客我们一起来看一下. 这里要用到几个修改器:$push,$pop,$pull 首先增加一个name: db.myFirstCollection.update({_id:1},{$push:{"auther":{"name":1}}}) 删除最后一个值,若要删除第

如何实现SP文档库类似百度文档库的效果 (副标题:如何在SP2013文档库的SWF文件用FlexPager显示)

如何实现SP文档库类似百度文档库的效果 (副标题:如何在SP2013文档库的SWF文件用FlexPager显示) 1. 编辑文档库列表显示页面,如下图: 2. 添加内容编辑器,如下图: 3. 添加如下在[内容编辑器中]-[编辑源],添加如下JS代码,如下图: ?  代码如下: <scrip type="text/javascript" src="/SiteAssets/jquery-1.4.1.js"></script> <script

DOM:文档对象模型 --树模型 文档:标签文档,对象:文档中每个元素对象,模型:抽象化的东西

DOM:文档对象模型 --树模型文档:标签文档,对象:文档中每个元素对象,模型:抽象化的东西 一:window: 属性(值或者子对象):opener:打开当前窗口的源窗口,如果当前窗口是首次启动浏览器打开的,则opener是null,可以利用这个属性来关闭源窗口. 方法(函数):事件(事先设置好的程序,被触发): 1.window.open("第一部分","第二部分","第三部分","第四部分"): 特征参数: 第一部分:写要

PowerDesigner(九)-模型文档编辑器(生成项目文档)(转)

模型文档编辑器 PowerDesigner的模型文档(Model  Report)是基于模型的,面向项目的概览文档,提供了灵活,丰富的模型文档编辑界面,实现了设计,修改和输出模型文档的全过程. 模型文档的功能如下: 为各个模型生成标准或定制的文档,并输出为RTF或HTML格式的文件 利用文档模板编辑器为模型文档提供统一的,定制的模板,类似于Word的模板功能 利用文档语言编辑器为模型文档提供各种语言,实现模型文档的国际化 既可以为每个模型生成单模型文档,也可以为几个模型生成多模型文档 文档模型编