WebBrowser控件在编辑状态下,按下回车键后执行的是分段操作,相隔较大,
Shift+回车是换行,两种行间距不一样。
为了让行间距一样,查了些资料,都说是要实现IDocHostUIHandler接口来定制WebBrowser。参考网上的做法把IDocHostUIHandler接口的个人实现挂接到 MSHTML 上。
首先需要获得 ICustomDoc 接口,然后再将个人实现的 IDocHostUIHandler 接口作为参数,
调用 ICustomDoc 接口的 SetUIHandler() 方法。webBrowser.DocumentText = string.Empty;
webBrowser.Document.Write(" <BODY> <DIV> test </DIV> </BODY>");
webBrowser.Document.ExecCommand("EditMode", false, null);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;
}然而我把IDocHostUIHandler接口挂接到 MSHTML 上后,WebBrowser控件又不能编辑了,焦点还是focus的,command命令也有效,粗体斜体都能用,就是不能往里边输入了,任何按键都能没有响应,反而丢掉了最初的文字入力功能,
请教各路大大,是不是我接口实现的不对还是怎么回事,急~~~~~~~~~~~

解决方案 »

  1.   

    用的 webbrowser 控件?干脆自己找个例子自己实现 mshtml site 吧借助 webbrowser 控件不爽的呢.
    看看这个不孬:
    URL: http://www.itwriting.com/repos/htmleditor/trunk
      

  2.   

    很大的一个东西,全吃透了要花点时间,大致看了一下,很多东西是相同的,其中也实现了IDocHostUIHandler接口,不过还是没有明白我的实现有什么问题
      

  3.   

    你用 svn 拉一份呀, 我在用她那个源码玩
      

  4.   

    谢谢楼上的,不过你给的这个东西短时间内玩不透,直接拿来用留下很多隐患的,扩展性,严密性什么的没底。难道就没有超人来解释一下怎么完美解决C#下用Webbrowser做富文本编辑器时,回车换行的问题么.........