问题是这样的,有一个需要用到富文本的地方,由于是winform的程序,而且程序是上一代老员工留下的,错误百出,现在要尽量修复,至少保证能正常使用,于是就开始一点点问题修复.

在win7 64位系统下出现无法激活编辑状态,或者说无法获得光标,总之无法写入任何字符就是了.

开始怀疑是32位和64位的原因,  编译了一个64位的版本测试,结果还是不行.

找到了@liust 仁兄的一篇文章,豁然开朗,原来是ie9在捣鬼,还不是64位的原因,  由于win7 64位只能安装ie9 所以问题还是得解决.

直接复制下面的代码,似乎是有些用,但是产生了其他问题

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
if (webBrowser1.Version.Major >= 9) 
webBrowser1.Document.Write(webBrowser1.DocumentText); 
doc.designMode = "On"; 
}
  

当然博主忘了说 要注册事件的.

要在private void SetupBrowser() 里

注册事件
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

由于我的系统是上一代老员工留下的,所以在DocumentCompleted 事件里有一些其他的代码.

导致出现了一个新的问题. "该文档已被修改,是否保存修改结果?"

出现了这个问题,再继续搜索,走了一些弯路

webBrowser1.Document.Write(webBrowser1.DocumentText); 应该是这句惹得祸

但是如何又能加载数据,又可以避免在这个地方修改控件的值呢,  我的想法应该是在设置On之前就把数据加载好

在调试中发现次触发焦点事件时首先会走到这个函数

private void SetupBrowser(bool edit)

在这个函数里有一个标志 edit

如果为真 则设置了 doc.designMode = "On"

之后又做了一些其他的操作,没有细看

为什么明明设置了"On"了 到了DocumentCompleted 又要再设置一次呢?

与其在那猜测,还不如调试呢,于是装上IE9, 开始调试

发现程序在IE9下跑到DocumentCompleted 时   ie9下的designMode为"Inherit"

难怪又要再设置一次"On" 于是根据SetupBrowser(bool edit) 这个里面的edit  在DocumentCompleted 中修改了一下代码

其中toolStrip.Visible 是控件的工具条是否显示,由于是个全局变量,所以就直接拿来用了,因为toolStrip.Visible = edit ; 否则楼主是想自己建个全局变量来保存edit的状态的

if (toolStrip.Visible)
{
    if (doc.designMode != null && doc.designMode != "On")
        doc.designMode = "On";

}

Winform 下使用WebBrowser的HTML编辑控件—WinHtmlControl 在win7 IE9下的问题的更多相关文章

  1. C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面

    个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...

  2. Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面 z

    http://www.cnblogs.com/zuowj/p/4504130.html 不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景 也最为 ...

  3. 在 Android 的文字编辑控件 (TEdit) 中, 如何按下 Enter 就隐藏虚拟键盘

    在 Windows 的应用中,我们常常为了让使用者能够快速输入,在Edit元件中的onKeyUp或者 onKeyDown 事件中主动侦测使用者输入的字元是否有换行符号 (Enter),当使用者按下了E ...

  4. 分享一个Winform里面的HTML编辑控件Zeta HTML Edit Control,汉化附源码

    我们知道,Web开发上有很多HTML的编辑控件,如FCKEditor.CKEditor.kindeditor等等,很多都做的很好,而虽然Winform里面有WebBrowser控件,但是默认这个控件是 ...

  5. winform界面开发-HTML内容编辑控件

    参照及推荐博客:伍华聪 http://www.cnblogs.com/wuhuacong/archive/2009/07/07/1518346.html http://www.cnblogs.com/ ...

  6. 【NET】Winform用户控件的初步封装之编辑控件

    编辑控件 public abstract partial class TEditorBase <TEntity, TRepository, TSqlStrConstruct> : User ...

  7. 基于MVC4+EasyUI的Web开发框架经验总结(5)--使用HTML编辑控件CKEditor和CKFinder

    Web开发上有很多HTML的编辑控件,如CKEditor.kindeditor等等,很多都做的很好,本文主要介绍在MVC界面里面,CKEditor的配置和使用.CKEditor的前身是FCKEdito ...

  8. [转载]ExtJs4 笔记(8) Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件

    作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...

  9. IP编辑控件(因为封装的是系统自带控件,所以也使用了CreateSubClass,不过为啥要封装CN_COMMAND和CN_NOTIFY不是很明白)

    最近需要用一个IP输入控件,网上找了几个,都不符合效果,有些还有一些奇怪的Bug.后来发现原来系统已经提供了IP地址编辑控件,只是系统提供的控件不能设置只读效果.网上找了下资料,封装了一下,自己迂回一 ...

随机推荐

  1. mysql中参数--init-file的作用是什么呢?

    需求描述: 今天在修改测试环境mysql数据库中root用户密码的时候,用到了--init-file参数, 所以,就在这里说下该参数的作用. 概念解释: 参数:--init-file=file_nam ...

  2. linux中,ssh实现免密自动登录到远程主机,ssh信任的实现

    需求描述: 平时使用ssh的时候,一般使用ssh都是通过用户名和密码登录到远程主机上, 然后执行一些命令,远程登录过程中,需要手动的输入密码(提示输入密码之后), 但是,在实际的应用过程中,涉及到让脚 ...

  3. Linux内核中断处理体系分析

    前一篇博文中:linux内核初始化阶段通过early_trap_init()函数完毕了把异常向量复制到0xFFFF0000開始的地方,这些异常向量大部分指向通过vector_stub宏定义的那段代码. ...

  4. SVN常用命令与分支操作

    1.基本操作 1.0 创建版本库: Svnadmin create /data/repos 2.0 修改配置文件 Auth文件   [groups]   admin=shguo   [/]   @ad ...

  5. Python 入门(八)切片

    对list进行切片 取一个list的部分元素是非常常见的操作.比如,一个list如下: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] 取前3个元素 ...

  6. 查看系统进程:ps

    ps命令用于查看系统进程,常见用法如下: [root@localhost ~]$ ps aux # 查看所有的进程 [root@localhost ~]$ ps aux | grep nginx # ...

  7. docker rmi 详解

    docker rmi 用于删除指定的镜像,常见用法如下: [root@localhost ~]$ docker rmi centos # 根据 REPOSITORY 来删除镜像 [root@local ...

  8. INSTALL_FAILED_INVALID_APK

    在项目中无意中把APP只写成了 xxx  没有xxx.xxx.xxx  掉坑里了,找了好久,给大家提不醒

  9. C++中的枚举变量

    至从C语言开始enum类型就被作为用户自定义分类有限集合常量的方法被引入到了语言当中,而且一度成为C++中定义编译期常量的唯一方法(后来在类中引入了静态整型常量).根据上面对enum类型的描述,有以下 ...

  10. 拼图的几个网上找到的Demo

    东西就直接放到云盘里了 https://yunpan.cn/ck8eCzJe9Pknm  访问密码 ee53