C#下的Webbrowser的KeyDown事件
来源:互联网 发布:移动4g网络接入点设置 编辑:程序博客网 时间:2024/05/19 11:50
最近在用Webbrowser开发一个富文本编辑器,一路磕磕碰碰,仅记录一下心得。
WebBrowser控件在编辑状态下,按下回车键后执行的是分段操作,相隔较大,Shift+回车是换行,两种行间距不一样。为了解决这个问题,倒是折腾了好几天。
在网上各种查找之后,几乎都是说用DIV标签来解决该问题,也就是编辑器初始时就直接把DIV嵌进去
<body>
<div> </div>
</body>
这样的话确实可以解决了该问题,回车之后就是新的DIV而不是换段落了,不过该方式有个问题,Ctrl+A全选后,再删除就会连带内部的DIV标签给删掉了,再回车又是一个P了。
接着继续研究,看到大牛提出来的,实现IDocHostUIHandler接口,按DOCHOSTUIFLAG_DIV_BLOCKDEFAULT的路子实现GetHostInfo方法。实现IDocHostUIHandler接口吧,查了半天,确实麻烦,先要生成MsHtmHstInterop.dll,用到的IDocHostUIHandler接口和ICustomDoc接口都是这个dll里边的,然后把IDocHostUIHandler接口的个人实现挂接到 MSHTML 上。
最郁闷的是,以上大牛都是用axWebbrowser来实现的,几经折腾,终于通过以下方式实现了IDocHostUIHandler接口:
// 把IDocHostUIHandler接口的个人实现挂接到 MSHTML 上
ICustomDoc cDoc = (ICustomDoc)this.webBrowser.Document.DomDocument;
cDoc.SetUIHandler((IDocHostUIHandler)this.webBrowser);
// IDocHostUIHandler 接口的实现,实现GetHostInfo
public void GetHostInfo(ref _DOCHOSTUIINFO pInfo)
{
// DOCHOSTUIFLAG_DIV_BLOCKDEFAULT
pInfo.dwFlags |= 0x00000100;
}
然而更杯具的事情发生了,编辑功能废了,也就是编辑模式下,任何按键都没反应,任何字符都敲不进去了.......
无奈之下,上坛子发帖去了,但一直没有得到回应,至今不知道我哪个地方错了,可能是我的接口实现有问题。
又回到之前思路,集中火力解决Ctrl+A全选后删除的问题。又碰到问题了,Webbrowser没有KeyDown,KeyPress相关的事件。
顿时觉得叫天不应叫地不灵...虽然偶是无神论者....
又接着憋屈,终于在内伤喷血之前.. 峰回路转,我找到了KeyDown事件!
Webbrowser本身是没有相关事件,但是HtmlElement有,而且webBrowser.Document.Body就是HtmlElement!
webBrowser.Document.Body.KeyDown += new HtmlElementEventHandler(Body_KeyDown);
虽然该问题还没有解决,但是算是多少有点进展了
- C#下的Webbrowser的KeyDown事件
- C#控件KeyDown、KeyPress与KeyUp的事件
- C# KeyDown KeyPress KeyUp 处理相应的键盘事件
- Winform下KeyDown,KeyPress,KeyUp事件的总结
- Winform下KeyDown,KeyPress,KeyUp事件的总结
- Winform下KeyDown,KeyPress,KeyUp事件的总结
- WinForm下的键盘事件(KeyPress、KeyDown)及如何处理不响应键盘事件
- WinForm下的键盘事件(KeyPress、KeyDown)及如何处理不响应键盘事件
- XFormEditor 的keydown事件不触发
- keyDown keyPress keyUp 事件的区别
- jquery 实现div、span的keydown事件
- touch,keydown事件遇到的问题
- keyDown keyPress keyUp 事件的区别
- JavaScript 的keydown,keypress,keyup事件
- 关于前端页面的keydown事件
- NSTextView收不到keyDown事件的问题解决
- WebBrowser控件的事件
- C#中Control的KeyDown,KeyPress 和KeyUp事件相关知识点
- Windows server2003下安装Informix数据库
- “上海式贫困”与“北京式富裕”
- 有关调音台的专业英文词汇
- VC对话创业者
- 关于 OnCloseQuery: 顺序、不能关机等
- C#下的Webbrowser的KeyDown事件
- 介绍下mp3写入avi文件的方法
- arch 恢复 root密码
- web.xml配置详解
- 纯天然的野菜居然会致癌?
- 几种计算机语言的评价
- (转载)Linux thread 最基本用法
- MyEclipse 快捷键
- C#线程同步的几种方法