.NET代码编辑控件ICSharpCode.TextEditor怎么用
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍了.NET代码编辑控件ICSharpCode.TextEditor怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
千家信息网最后更新 2025年01月19日.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 ListGenerateFoldMarkers(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安全错误
数据库的锁怎样保障安全
服务器显卡点不亮的原因
天津工业大学论文重用数据库
关于网络安全说法不正
医院金保网服务器要求
jsp转数据库中文乱码
重庆有哪些软件开发公司
没有基础如何做软件开发
河北学生网络技术开发指导
道县软件开发
国产数据库有多强大
数字政府网络安全数据联盟
现代网络技术sdn
sql数据库项目部署文件
服务器工程师做什么的
安卓手动建立数据库连接
数据库文件可以直接下载吗
联想服务器上显卡型号有哪些
在服务器上配置好nfs
软件开发组装电脑配置
grid数据库软件
网络安全画报.doc
在数据库中什么叫关系的关键字
哪里有聊天软件开发
服务器所在地不一样网速也不一样
畅捷链接服务器失败什么原因
教室信息管理系统设计数据库
数据库自动生成表工具
公司软件开发实力介绍
资阳网络安全审计
广州物流软件开发机构