该文档已被修改,是否保存修改结果?
是:保存修改结果
否:放弃修改结果
取消:仍打开该文档
触发这个对话框方法
初始化
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));
}
文档内容是否改变
这有个问题:当文档中的内容非常多时 由于每隔100毫秒就判断一次 这会使程序一卡一卡的
该文档已被修改,是否保存修改结果 获得文档内容是否改变,要比屏蔽它有更重要的意义
定义一个字符串变量 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;
}
}
}
新建文档
打开文档
保存文档
另存文档
- Linux中几个与文档相关的命令
一.介绍 本文将介绍几个与文档相关的命令 软件环境: 物理机 Windows 8.0 虚拟机 VMware Workstation 12 Linux系统 CentOS 7.3 二.命令cat 命令ca ...
- MongoDB(5)- Document 文档相关
Documents MongoDB 的文档可以理解为关系型数据库(Mysql)的一行记录 MongoDB 将数据记录为 BSON 格式的文档 BSON 是 JSON 文档的二进制表示,但它支持的数据类 ...
- xml和xsd架构文档相关知识
1.使用架构(XSD)验证XML文件 2.使用自动生成工具: 工具目录:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4. ...
- 如何使用ABBYY FineReader 12将JPEG文件转换成Word文档
日常工作中处理JPEG格式的图像文件时,有时需要转换成Word文档进行编辑,市场上应用而生了很多转换工具,相信不少人听说过OCR(光学字符识别)软件,可以用来转换图像文件,而在OCR软件中, ABBY ...
- [Swift通天遁地]七、数据与安全-(8)创建普通PDF文档和加密PDF文档
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 一文搭建自己博客/文档系统:搭建,自动编译和部署,域名,HTTPS,备案等
本文纯原创,搭建后的博客/文档网站可以参考: Java 全栈知识体系.如需转载请说明原处. 第一部分 - 博客/文档系统的搭建 搭建博客有很多选择,平台性的比如: 知名的CSDN, 博客园, 知乎,简 ...
- 百度大脑UNIT3.0解读之对话式文档问答——上传文档获取对话能力
在日常生活中,用户会经常碰到很多复杂的规章制度.规则条款.比如:乘坐飞机时,能不能带宠物上飞机,3岁小朋友是否需要买票等.在工作中,也会面对公司多样的规定制度和报销政策.比如:商业保险理赔需要什么材料 ...
- 如何实现SP文档库类似百度文档库的效果 (副标题:如何在SP2013文档库的SWF文件用FlexPager显示)
1. 编辑文档库列表显示页面,如下图: 2. 添加内容编辑器,如下图: 3. 添加如下在[内容编辑器中]-[编辑源],添加如下JS代码,如下图: 代码如下: <scrip type=&quo ...
- PowerDesigner(九)-模型文档编辑器(生成项目文档)(转)
模型文档编辑器 PowerDesigner的模型文档(Model Report)是基于模型的,面向项目的概览文档,提供了灵活,丰富的模型文档编辑界面,实现了设计,修改和输出模型文档的全过程. 模型文 ...
随机推荐
- many-to-one和one-to-many的配置比较
many-to-one配置: <many-to-one name="dailyCatalog" column="daily_catalog_id" cla ...
- ZBreak
https://github.com/atskyline/ZBreak 最近用电脑用的多,总觉得有必要2个小时休息一会.就花了一点点时间写了这个小东西如果连续使用电脑超过2个小时会弹出一个窗口提示. ...
- JavaScript中定时器
JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成.它们向任务队列添加定时任务. setTimeout() ...
- 有关SQL
1.SQL str函数是什么意思? 将数值型转换成指定长度的字符串.str()函数语法:str(数字类型的表达式[,表达式总长度][,小数点后面的位数]),表达式总长度和小数点后面的位数为可选择参数. ...
- POJ 2488 A Knight's Journey
题意:给一个n×m的棋盘,如果一个骑士可以从任意一个位置出发不重复的走遍棋盘的每个格子就输出字典序最短的路径. 解法:dfs.暴搜n×m次,只是被字典序输出坑了……而且字母是列序号数字是行序号……这两 ...
- Ubuntu上搭建Watir-Webdriver与Cucumber环境
本文主要演示如何在Ubuntu上搭建Watir-Webdriver与Cucumber环境,用于自动化测试. 1. Ubuntu环境 A. 安装 因为我的工作机是Windows,所以采用虚拟机的方式使用 ...
- [RQNOJ313]波浪数
题目描述 波浪数是在一对数字之间交替转换的数,如1212121,双重波浪数则是指在两种进制下都是波浪数的数,如十进制数191919是一个十进制下的波浪数,它对应的十一进制数121212也是一个波浪数, ...
- python学习之copy模块
Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象.2. copy.deepc ...
- python PIL下的各种问题
为了实现验证码的功能,使用了PIL.结果出现各种问题: 先是"ImportError: The _imagingft C module is not installed",goog ...
- rpc,客户端与NameNode通信的过程
远程过程:java进程.即一个java进程调用另外一个java进程中对象的方法. 调用方称作客户端(client),被调用方称作服务端(server).rpc的通信在java中表现为客户端去调用服务端 ...