青岛国家高新区建设局网站,淄博建网站多少钱,wordpress交互式地图,wordpress 目录层级1、概述 在WinForm开发中#xff0c;您可能会碰到发送邮件时内容编辑的问题#xff0c;大部分开发人员第一个想法是希望将 WinForm中的内容编辑器做到和.NET 中类似FCK一样。今天我们就来介绍下如何实现和FCK一样的内容编辑器功能。 2、正文 邮件内容编辑器的问题,在…1、概述 在WinForm开发中您可能会碰到发送邮件时内容编辑的问题大部分开发人员第一个想法是希望将 WinForm中的内容编辑器做到和.NET 中类似FCK一样。今天我们就来介绍下如何实现和FCK一样的内容编辑器功能。 2、正文 邮件内容编辑器的问题,在网上搜索一下碰到这个的问题的人还不少大多数开发者参考的下面这篇文章中的内容http://www.codeproject.com/cs/miscctrl/editor_in_windows_forms.asp且不说这篇文章中实现的方法的好坏。但里面包含的Microsoft.MSHTML.dll动辄7M多实在是让人看了不舒服。又或是利用WindowsLive.Writer.Interop.Mshtml和WindowsLive.Writer.Mshtml两个组件来实现维护起来相当麻烦代码就更不好看懂了。今天我向大家介绍一种新的内容编辑器的实现彻底解决上述的问题总大小不过几百KB。 首先我们来分析下实现的原理。在上述那个例子中它利用C#中的webBrowser控件和HTML交互达到的内容编辑器的效果但它的实现却是需要去完成单个单个的功能最后组合而成例如实现剪切的功能的核心代码 1 public void Cut()2 {3 webBrowser1.Document.ExecCommand(Cut, false, null);4 }5 public void Bold()6 {7 webBrowser1.Document.ExecCommand(Bold, false, null);8 } 这种方法是不是太过复杂而且维护起来也不方便。既然是webBrowser和HTML的交互实现原来那为什么我们不直接做一个纯HTML的邮件编辑器然后再来和webBrowser交互呢这就是我今天要介绍方法的核心原理。下面我们来看看它的实现过程第一步纯HTML内容编辑器其实这一步最简单基本上您在网上搜索HTML内容编辑器就会有一大堆出现在您面前。既然是纯HTML的记住一定是双击既可以打开预览的。如图 当然了我们还是要写一点必要的JS便于获取和设置从webBrowser控件传出来的内容。 script//获取邮件内容function GetContent(){ return editor.html();}function GetTitile(){ return document.getElementById(txttile).value;}function GetFileUrl(){ return document.getElementById(txtfile).value;}function SetTitile(arg){ document.getElementById(txttile).valuearg;}function SetContent(arg){ editor.html(arg);}/script 第二步内容交互这里比较简单就是一个从webBrowser1中执行JS函数的核心代码 webBrowser1.Document.InvokeScript(SetContent, objArray); 其他部分没什么好说明的直接看代码吧。 View Code 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Security.Permissions; //需加的10 11 namespace EmailEdit12 {13 [PermissionSet(SecurityAction.Demand, Name FullTrust)]//需加的14 [System.Runtime.InteropServices.ComVisibleAttribute(true)]//需加的 15 public partial class SendEmail : Form16 {17 public SendEmail()18 {19 InitializeComponent();20 }21 22 private void SendEmail_Load(object sender, EventArgs e)23 {24 webBrowser1.Navigate(Application.StartupPath /edit/editemail.html);25 }26 27 //获取邮件信息28 private void button1_Click(object sender, EventArgs e)29 {30 string strtitle webBrowser1.Document.InvokeScript(GetTitile).ToString();31 string strfile webBrowser1.Document.InvokeScript(GetFileUrl).ToString();32 string strcontent webBrowser1.Document.InvokeScript(GetContent).ToString();33 MessageBox.Show(邮件的标题是 strtitle \n 附件 strfile \n 内容 strcontent);34 }35 36 //设置邮件信息 37 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)38 {39 //邮件标题40 string strtitle 这是标题;41 Object[] objArray new Object[1];42 objArray[0] (Object)strtitle;43 webBrowser1.Document.InvokeScript(SetTitile, objArray);44 45 //邮件内容46 string name font color#FF0000h1hello world/h1/font!sendry lee.;47 objArray new Object[1];48 objArray[0] (Object)name;49 webBrowser1.Document.InvokeScript(SetContent, objArray);50 }51 }52 } 第三步运行看实现的效果和图片吧 如果对您有帮助别忘了分享给其他人感谢您的阅读 转载于:https://www.cnblogs.com/sendrylee/archive/2012/05/24/WinForm%E9%82%AE%E4%BB%B6%E5%86%85%E5%AE%B9%E7%BC%96%E8%BE%91%E5%99%A8.html