当前位置:首页 > 网络编程 > 软件语言 > .NET > WinForm 邮件编辑器回车的处理

WinForm 邮件编辑器回车的处理

点击次数:58 次 发布日期:2008-11-06 08:13:20 作者:源代码网
源代码网推荐
广告载入中

源代码网整理以下写过 WebForm Html 编辑器的都知道,默认的回车是很讨厌的,一下子会占掉两行,因为它是用 <P></P> 段落标示的。有人是在初始化时加个 <div></div> 来杜绝这个问题,但是这个解决方案有个不好,就是当全选所有内容再清除以后,<div></div> 也会没有了,又回到两行的状况。因此也有解决方案是在回车时插入一个 <br> 并把光标定位到换行处。我们在 WebForm 中已经采用了后者,效果还不错。那么现在在 Winform 中如何来实现这个功能呢?刚开始简单地以为把 WebForm 的代码抄过来就可以了,可是实际发现当 designMode 开为 On 的时候,事件没有激发,所以只好另辟新法。因为 WebBrowser 和 WinForm 是可以交互的,所以最后的代码实现是这样的:
    首先,为 KeyDown 事件添加 Event Handler :

源代码网整理以下            HtmlDocument htmlDoc = webBrowser1.Document;
            htmlDoc.Body.KeyDown += new HtmlElementEventHandler(Body_KeyDown);

源代码网整理以下    然后在 KeyDown 事件中插入 <br> 并定位光标: 软件开发网 www.mscto.com

源代码网整理以下        void Body_KeyDown(object sender, HtmlElementEventArgs e)
        {
            if (e.KeyPressedCode == 13 && !e.ShiftKeyPressed)
            {
                IHTMLDocument2 document = (IHTMLDocument2)webBrowser1.Document.DomDocument;
                IHTMLTxtRange range = (IHTMLTxtRange)document.selection.createRange();
                range.pasteHTML("<br>");
                range.moveStart("character", 0);
                range.collapse(true); 软件开发网 www.mscto.com
                range.select();
                e.ReturnValue = false;
            }
        }

源代码网整理以下    其实原理跟 WebForm 还是一样,只是把 script 变成了 WinForm 代码。


源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华