.NET代码编辑控件ICSharpCode.TextEditor怎么用
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了.NET代码编辑控件ICSharpCode.TextEditor怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
千家信息网最后更新 2026年11月01日.NET代码编辑控件ICSharpCode.TextEditor怎么用
这篇文章主要介绍了.NET代码编辑控件ICSharpCode.TextEditor怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
先来看一下运行效果:
一、项目结构
这里需要注意lib文件夹下导入的类库,这个Demo需要这些dll.
二、代码折叠
需要实现IFoldingStrategy中的 GenerateFoldMarkers 方法,代码如下:
using ICSharpCode.TextEditor.Document;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace JackWangCUMT.WinForm{ /// /// The class to generate the foldings, it implements ICSharpCode.TextEditor.Document.IFoldingStrategy /// public class MingFolding : IFoldingStrategy { /// /// Generates the foldings for our document. /// /// The current document. /// The filename of the document. /// Extra parse information, not used in this sample. /// A list of FoldMarkers. public List GenerateFoldMarkers(IDocument document, string fileName, object parseInformation) { List list = new List(); //stack 先进先出 var startLines = new Stack(); // Create foldmarkers for the whole document, enumerate through every line. for (int i = 0; i < document.TotalNumberOfLines; i++) { // Get the text of current line. string text = document.GetText(document.GetLineSegment(i)); if (text.Trim().StartsWith("#region")) // Look for method starts { startLines.Push(i); } if (text.Trim().StartsWith("#endregion")) // Look for method endings { int start = startLines.Pop(); // Add a new FoldMarker to the list. // document = the current document // start = the start line for the FoldMarker // document.GetLineSegment(start).Length = the ending of the current line = the start column of our foldmarker. // i = The current line = end line of the FoldMarker. // 7 = The end column list.Add(new FoldMarker(document, start, document.GetLineSegment(start).Length, i, 57, FoldType.Region, "...")); } //支持嵌套 {} if (text.Trim().StartsWith("{")) // Look for method starts { startLines.Push(i); } if (text.Trim().StartsWith("}")) // Look for method endings { if (startLines.Count > 0) { int start = startLines.Pop(); list.Add(new FoldMarker(document, start, document.GetLineSegment(start).Length, i, 57, FoldType.TypeBody, "...}")); } } // /// if (text.Trim().StartsWith("/// ")) // Look for method starts { startLines.Push(i); } if (text.Trim().StartsWith("/// ")) // Look for method endings { int start = startLines.Pop(); //获取注释文本(包括空格) string display = document.GetText(document.GetLineSegment(start + 1).Offset, document.GetLineSegment(start + 1).Length); //remove /// display = display.Trim().TrimStart('/'); list.Add(new FoldMarker(document, start, document.GetLineSegment(start).Length, i, 57, FoldType.TypeBody, display)); } } return list; } }} 三、高亮配置
拷贝CSharp-Mode.xshd为 JackCSharp-Mode.xshd ,将其中的名字修改为: SyntaxDefinition name = "JackC#" ,并添加高亮关键字,如下:
这样代码中出现的JackWang就会高亮。下面的代码片段将自定义高亮文件进行加载,并用SetHighlighting进行设置,这里一定注意目录下必须有xshd的配置文件,否则高亮将失效。
textEditor.Encoding = System.Text.Encoding.UTF8; textEditor.Font = new Font("Hack",12); textEditor.Document.FoldingManager.FoldingStrategy = new JackWangCUMT.WinForm.MingFolding(); textEditor.Text = sampleCode; //自定义代码高亮 string path = Application.StartupPath+ "\\HighLighting"; FileSyntaxModeProvider fsmp; if (Directory.Exists(path)) { fsmp = new FileSyntaxModeProvider(path); HighlightingManager.Manager.AddSyntaxModeFileProvider(fsmp); textEditor.SetHighlighting("JackC#"); }为了保持代码适时进行折叠,这里监听文本变化,如下所示:
private void TextEditor_TextChanged(object sender, EventArgs e) { //更新,以便进行代码折叠 textEditor.Document.FoldingManager.UpdateFoldings(null, null); }最后说明的是,我们可以定义一个格式化代码的类,来格式化C#代码:
感谢你能够认真阅读完这篇文章,希望小编分享的".NET代码编辑控件ICSharpCode.TextEditor怎么用"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
代码
高亮
篇文章
文件
控件
文本
格式
配置
适时
价值
先进
关键
关键字
兴趣
同时
名字
拷贝
效果
文件夹
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
国智互联网科技
科技互联网产品
互联网科技公司税收优惠
互联网科技的
西安互联网科技
顺玮阁互联网科技
互联网高科技企业
深圳艾佳互联网科技
互联网金融监管科技
承德科技产业互联网发展
现代互联网科技股
互联网对科技的发展
亳州好赞互联网科技有限公司
华夏恒生科技与互联网科技
互联网方面的科技前沿
广东工业互联网大赛深圳学泰科技
美国互联网科技公司
半导体行业属于互联网高科技类吗
互联网科技对化妆品行业
网互联网络科技
互联网金融科技
中关村互联网科技集团
互联网金融公司科技
互联网科技公司电话
济南华为互联网科技产业总部基地
互联网科技中介
成都铂石互联网科技做什么的
辽宁互联网新科技
江苏互联网科技小贷
互联网科技的前景