给CuteEditor5增加了高亮代码显示功能(C#版)

 CuteEditor在很多网站上都有介绍了,是一款超级Cool的web在线编辑器,下载地址用google找一下就能找到,就不提供了,但是安装方法还是要说一下,因本次是使用vs2005。

      我们在vs2005里面新建个web site吧,把CuteEditor.dll(主控件)、CuteEditor.lic(许可证)、CuteEditor.ImageEditor.dll(因为5.0增加了个EditorImage的功能)、NetSpell.SpellChecker.dll(拷这个的原因是默认打开拼写检查)这几个文件拷贝到web site的bin目录下,刷新bin目录(不像vs2003需要引用dll),同时我们也要把解压缩后的CuteSoft_Client目录全部拷贝到应用程序的根目录下。然后把CuteEditor添加到工具面板.我们在工具面板里面右键选择"选择项",在出来的对话框里面选择"游览",找到CuteEditor.dll,一路确定就可以了。

      我们再添加个CuteEditor.aspx,把工具面板里面的Editor拖到页面上来,这时你就可以运行你的程序使用CuteEditor了,运行如下图:

      上面的只是个最简单的安装,还有比如控制CueEditor的显示,已经安全性和那个什么上传的啊,还有控制用户上传的目录啊,或者给每个用户建个他们自己的图片目录啊,还必须要另外设置,这些暂时先略过吧,您可以自己看一下说明进行设置,这里不多说了。我们现在要开始要给CuteEditor增加高亮代码显示功能,俺这里使用的是CodeHighlighter控件,您可以到http://www.codehighlighter.com下载最新版,最新版同时支持.net1和.net2,因为使用的是vs2005,俺就使用了最新版,现在我们先来给CuteEditor增加一个按钮和打开插入高亮代码的页面代码。

CuteEditor.aspx代码

None.gif <% @ Page Language = " C# "  AutoEventWireup = " true "  CodeBehind = " Default.aspx.cs "  Inherits = " testCuteeditor._Default "   %>
None.gif
<% @ Register Assembly = " CuteEditor "  Namespace = " CuteEditor "  TagPrefix = " CE "   %>
None.gif
<! DOCTYPE html PUBLIC  " -//W3C//DTD XHTML 1.0 Transitional//EN "   " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
None.gif
None.gif
< html xmlns = " http://www.w3.org/1999/xhtml "   >
None.gif
< head runat = " server " >
None.gif    
< title > 无标题页 </ title >
None.gif
</ head >
None.gif
< body >
None.gif    
< form id = " form1 "  runat = " server " >
None.gif    
< script language = " JavaScript "  type = " text/javascript "   >
None.gif function ShowMyDialog(button)
ExpandedBlockStart.gifContractedBlock.gif 
dot.gif {
InBlock.gif 
//use CuteEditor_GetEditor(elementinsidetheEditor) to get the cute editor instance
InBlock.gif
 var editor=CuteEditor_GetEditor(button);
InBlock.gif 
//show the dialog page , and pass the editor as newwin.dialogArguments
InBlock.gif
var newwin=showModelessDialog("insertcode.aspx?_rand="+new Date().getTime()
InBlock.gif ,editor,
"dialogWidth:600px;dialogHeight:430px");
ExpandedBlockEnd.gif }

None.gif
</ script >
None.gif    
< div >
None.gif    
< CE:Editor ID = " cuteedit "  runat = " server "  AutoConfigure = " Simple " >
None.gif        
< FrameStyle BackColor = " White "  BorderColor = " #DDDDDD "  BorderStyle = " Solid "  BorderWidth = " 1px "
None.gif            CssClass
= " CuteEditorFrame "  Height = " 100% "  Width = " 100% "   />
None.gif    
</ CE:Editor >
None.gif    
</ div >
None.gif    
</ form >
None.gif
</ body >
None.gif
</ html >
None.gif
CuteEditor.aspx.cs代码
None.gif using  System;
None.gif
using  System.Data;
None.gif
using  System.Configuration;
None.gif
using  System.Collections;
None.gif
using  System.Web;
None.gif
using  System.Web.Security;
None.gif
using  System.Web.UI;
None.gif
using  System.Web.UI.WebControls;
None.gif
using  System.Web.UI.WebControls.WebParts;
None.gif
using  System.Web.UI.HtmlControls;
None.gif
None.gif
namespace  testCuteeditor
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
public partial class _Default : System.Web.UI.Page
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
protected void Page_Load(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
int pos = cuteedit.ToolControls.IndexOf("Italic"+ 20;
InBlock.gif            System.Web.UI.WebControls.WebControl ctrl 
= cuteedit.CreateCommandButton("myinsertbutton""csharp.gif""插入代码");
InBlock.gif            ctrl.Attributes.Add(
"onclick""ShowMyDialog(this)");
InBlock.gif            cuteedit.InsertToolControl(pos, 
"myinsertbutton", ctrl);
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

运行如下图:

工具栏中多了一个按钮,接下来把codehighlighter的dll控件也按刚才的方法copy到bin目录下,再把Languages目录拷贝到应用程序根目录下,这里还要对web.config进行配置一下,在<configuration>的<configSections>下增加一句:
None.gif < section name ="codeHighlighter" type ="ActiproSoftware.CodeHighlighter.CodeHighlighterConfigurationSectionHandler, ActiproSoftware.CodeHighlighter.Net20" />

在<configuration>和</configuration>间加
None.gif < codeHighlighter >
None.gif
< cache languageTimeout ="3" />
None.gif
< keywordLinking enabled ="true" target ="_blank" defaultKeywordCollectionKey ="ActiproKeywords" >
None.gif
< keywordCollection key ="ActiproKeywords" >
None.gif
< explicitKeyword tokenKey ="IdentifierToken" patternValue ="Actipro" url ="http://www.actiprosoftware.com" caseSensitive ="false" />
None.gif
< explicitKeyword tokenKey ="IdentifierToken" patternValue ="CodeHighlighter" url ="http://www.codehighlighter.com" caseSensitive ="false" />
None.gif
</ keywordCollection >
None.gif
</ keywordLinking >
None.gif
< languages >
None.gif
< language key ="BatchFile" definitionPath ="~/Languages/ActiproSoftware.BatchFile.xml" />
None.gif
< language key ="C#" definitionPath ="~/Languages/ActiproSoftware.CSharp.xml" semanticParserType ="CodeHighlighterTest.SemanticCSharpParser, CodeHighlighterTest" />
None.gif
< language key ="CSS" definitionPath ="~/Languages/ActiproSoftware.CSS.xml" semanticParserType ="CodeHighlighterTest.SemanticCssParser, CodeHighlighterTest" />
None.gif
< language key ="HTML" definitionPath ="~/Languages/ActiproSoftware.HTML.xml" semanticParserType ="CodeHighlighterTest.SemanticHtmlParser, CodeHighlighterTest" />
None.gif
< language key ="INIFile" definitionPath ="~/Languages/ActiproSoftware.INIFile.xml" />
None.gif
< language key ="Java" definitionPath ="~/Languages/ActiproSoftware.Java.xml" semanticParserType ="CodeHighlighterTest.SemanticJavaParser, CodeHighlighterTest" />
None.gif
< language key ="JScript" definitionPath ="~/Languages/ActiproSoftware.JScript.xml" semanticParserType ="CodeHighlighterTest.SemanticJScriptParser, CodeHighlighterTest" />
None.gif
< language key ="Perl" definitionPath ="~/Languages/ActiproSoftware.Perl.xml" />
None.gif
< language key ="PHP" definitionPath ="~/Languages/ActiproSoftware.PHP.xml" />
None.gif
< language key ="Python" definitionPath ="~/Languages/ActiproSoftware.Python.xml" />
None.gif
< language key ="SQL" definitionPath ="~/Languages/ActiproSoftware.SQL.xml" semanticParserType ="CodeHighlighterTest.SemanticSqlParser, CodeHighlighterTest" />
None.gif
< language key ="VB.NET" definitionPath ="~/Languages/ActiproSoftware.VBDotNet.xml" semanticParserType ="CodeHighlighterTest.SemanticVBDotNetParser, CodeHighlighterTest" />
None.gif
< language key ="VBScript" definitionPath ="~/Languages/ActiproSoftware.VBScript.xml" semanticParserType ="CodeHighlighterTest.SemanticVBDotNetParser, CodeHighlighterTest" />
None.gif
< language key ="XML" definitionPath ="~/Languages/ActiproSoftware.XML.xml" />
None.gif
</ languages >
None.gif
< lineNumberMargin foreColor ="Teal" paddingCharacter =" " visible ="true" />
None.gif
< outlining enabled ="true" imagesPath ="~/Images/OutliningIndicators/" />
None.gif
< spacesInTabs count ="4" />
None.gif
</ codeHighlighter >

建立InsertCode.aspx文件(代码高亮处理)代码如下:
 
None.gif <% @ Page Language = " C# "  AutoEventWireup = " true "  CodeBehind = " InsertCode.aspx.cs "  ValidateRequest = " false "  Inherits = " testCuteeditor.InsertCode "   %>
None.gif
None.gif
<% @ Register TagPrefix = " CH "  Namespace = " ActiproSoftware.CodeHighlighter "  Assembly = " ActiproSoftware.CodeHighlighter.Net20 "   %>
None.gif
<! DOCTYPE html PUBLIC  " -//W3C//DTD XHTML 1.0 Transitional//EN "   " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
None.gif
< html xmlns = " http://www.w3.org/1999/xhtml "   >
None.gif
< head id = " Head1 "  runat = " server " >
None.gif 
< title > 插入代码 </ title >
None.gif  
< style type = " text/css " >
ExpandedBlockStart.gifContractedBlock.gif body 
dot.gif { BACKGROUND-COLOR: #e5e5e5 }
ExpandedBlockStart.gifContractedBlock.gif .tb
dot.gif { FONT-SIZE: 13px }
ExpandedBlockStart.gifContractedBlock.gif .code
dot.gif { width:400px;height:255px; }
None.gif 
</ style >
None.gif 
< base  target = " _self "   />
None.gif
</ head >
None.gif
< body >
None.gif 
< form id = " form1 "  runat = " server " >
None.gif
< table  class = " tb "  cellspacing = " 0 "  cellpadding = " 3 "  border = " 0 " >
None.gif 
< tr >
None.gif 
< th align = " right "  style = " WIDTH:80px " > 编程语言: </ th >
None.gif 
< td >< asp:DropDownList Runat = " server "  ID = " LanguageDropDownList " /></ td >
None.gif 
</ tr >
None.gif 
< tr >
None.gif 
< th align = " right " > 选项: </ th >
None.gif 
< td >< asp:CheckBox Runat = " server "  ID = " OutliningEnabledCheckBox "  Checked = " True "  Text = " 允许代码折叠 "   />& nbsp; < asp:CheckBox Runat = " server "  ID = " LineNumberMarginVisibleCheckBox "  Checked = " True "  Text = " 显示行号 "   /></ td >
None.gif 
</ tr >
None.gif 
< tr >
None.gif 
< th valign = " top "  align = " right " > 代码: </ th >
None.gif 
< td >< asp:TextBox Runat = " server "  ID = " CodeTextBox "  TextMode = " MultiLine "  Rows = " 10 "  Columns = " 80 "  CssClass = " code "   /></ td >
None.gif 
</ tr >
None.gif 
< tr >
None.gif 
< td >& nbsp; </ td >
None.gif 
< td >< asp:Button Runat = " server "  ID = " HighlightButton "  Text = " 确 定 "  OnClick = " HighlightButton_Click " />& nbsp; & nbsp; & nbsp; & nbsp; < input onclick = " return window.close() "  type = " button "  value = " 关 闭 "  id = " Button1 "   /></ td >
None.gif 
</ tr >
None.gif 
< tr >
None.gif 
< td ></ td >
None.gif 
< td >< pre >
None.gif
< CH:CodeHighlighter ID = " CodeHighlighter1 "  runat = " server "  OnPostRender = " CodeHighlighter1_PostRender " ></ CH:CodeHighlighter ></ pre ></ td >
None.gif 
</ tr >
None.gif
</ table >
None.gif
< div id = " ScriptOutPut "  runat = " server " ></ div >
None.gif 
</ form >
None.gif
</ body >
None.gif
</ html >
InsertCode.aspx.cs代码:
None.gif using  System;
None.gif
using  System.Data;
None.gif
using  System.Configuration;
None.gif
using  System.Collections;
None.gif
using  System.Web;
None.gif
using  System.Web.Security;
None.gif
using  System.Web.UI;
None.gif
using  System.Web.UI.WebControls;
None.gif
using  System.Web.UI.WebControls.WebParts;
None.gif
using  System.Web.UI.HtmlControls;
None.gif
None.gif
namespace  testCuteeditor
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
public partial class InsertCode : System.Web.UI.Page
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
protected void Page_Load(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
if (!IsPostBack)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                ActiproSoftware.CodeHighlighter.CodeHighlighterConfiguration config 
= (ActiproSoftware.CodeHighlighter.CodeHighlighterConfiguration)System.Configuration.ConfigurationManager.GetSection("codeHighlighter");
InBlock.gif                
foreach (string key in config.LanguageConfigs.Keys)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    LanguageDropDownList.Items.Add(key);
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
protected void HighlightButton_Click(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            CodeHighlighter1.Text 
= CodeTextBox.Text;
InBlock.gif            CodeHighlighter1.OutliningEnabled 
= true;
InBlock.gif            CodeHighlighter1.LanguageKey 
= LanguageDropDownList.SelectedValue;
InBlock.gif            CodeHighlighter1.OutliningEnabled 
= OutliningEnabledCheckBox.Checked;
InBlock.gif            CodeHighlighter1.LineNumberMarginVisible 
= LineNumberMarginVisibleCheckBox.Checked;
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
protected void CodeHighlighter1_PostRender(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
if (IsPostBack)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
string html = CodeHighlighter1.Output;
InBlock.gif                html 
= html.Replace("\r\n""<br />");
InBlock.gif                System.Text.StringBuilder htmlsb 
= new System.Text.StringBuilder(html);
InBlock.gif                htmlsb.Replace(
"\\""\\\\");
InBlock.gif                htmlsb.Replace(
"'""\\\'");
InBlock.gif                html 
= htmlsb.ToString();
InBlock.gif                
string divstr= "<div style=\\'BORDER-RIGHT: windowtext 0.5pt solid;PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px;PADDING-TOP: 4px;BORDER-LEFT: windowtext 0.5pt solid;WIDTH: 98%; BORDER-BOTTOM: windowtext 0.5pt solid;word-break:break-all\\'>";
InBlock.gif                html 
= divstr + html + "</div>";
InBlock.gif                System.Text.StringBuilder sb 
= new System.Text.StringBuilder();
InBlock.gif                sb.Append(
"<");
InBlock.gif                sb.Append(
"script");
InBlock.gif                sb.Append(
">");
InBlock.gif                sb.Append(
"var editor=window.dialogArguments;editor.ExecCommand('PasteHTML',false,'" + html + "');window.close();");
InBlock.gif                sb.Append(
"<");
InBlock.gif                sb.Append(
"/");
InBlock.gif                sb.Append(
"script");
InBlock.gif                sb.Append(
">");
InBlock.gif                ScriptOutPut.InnerHtml 
= sb.ToString();
InBlock.gif
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif

本文参考网上的几篇关于CuteEditor的文章,修正了其文章改成C#后出现的单引号问题

转载于:https://www.cnblogs.com/dail/archive/2007/02/09/645730.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值