发布语法加亮编辑器控件(SyntaxTextBox)

2024-02-27 02:58

本文主要是介绍发布语法加亮编辑器控件(SyntaxTextBox),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        一直对语法加亮编辑器控件非常感兴趣,想弄个过来在项目中show一把以挣点眼球。遂上网搜搜,发现ActiproSoftware公司的SyntaxEditor是个好冬冬啊(SnippetCompiler就是用的这个控件),VS的功能它都基本实现了,流口水啊(http://www.chinaaspx.com/comm/dotnetbbs/Showtopic.aspx?Forum_ID=45&id=146786&PPage=8&Page=1)。
        但好东西都是要银子买的,人家要银子3000大洋,咱们穷人没办法,没银两,又搜不到,只好自己动手编了。边上网参考网友代码,加上废寝忘食三五天,雏形出来了,能满足一般性的代码加亮展示要求,免费奉送!

功能概述
     语法加亮
     加亮规则由XML文件进行配置
     AutoComplete(ctrl+shift+space)
     可控步数Undo/Redo
     全选、拷贝、粘贴快键(Ctrl+A, Ctrl+C, Ctrl+V)
     直接操作RTF文档格式,提高效率

效果 
   

示例代码

    this .txtSyntax.ConfigFile  =   " csharp.xml " ;

   
this .txtSyntax.AcceptsTab  =   true ;
   
this .txtSyntax.CaseSensitive  =   false ;
   
this .txtSyntax.Dock  =  System.Windows.Forms.DockStyle.Fill;
   
this .txtSyntax.FilterAutoComplete  =   true ;
   
this .txtSyntax.Location  =   new  System.Drawing.Point( 0 0 );
   
this .txtSyntax.MaxUndoRedoSteps  =   50 ;
   
this .txtSyntax.Name  =   " txtSyntax " ;
   
this .txtSyntax.Size  =   new  System.Drawing.Size( 464 257 );
   
this .txtSyntax.TabIndex  =   0 ;
   
this .txtSyntax.Text  =   " if then while begin " ;
   
this .txtSyntax.WordWrap  =   false ;


XML配置文件示例(csharp.xml)

<?xml version="1.0" encoding="utf-8"?>
<DescriptorCollection>
  <Descriptor>
    <Token>/*</Token>
    <CloseToken>*/</CloseToken>
    <Color>0,100,0</Color>
    <Font>宋体,20</Font>
    <DescriptorType>ToCloseToken</DescriptorType>
    <DescriptorRecognition>StartsWith</DescriptorRecognition>
    <UseForAutoComplete>False</UseForAutoComplete>
  </Descriptor>
  <Descriptor>
    <Token>[</Token>
    <CloseToken>]</CloseToken>
    <Color>255,0,0</Color>
    <Font>宋体,20</Font>
    <DescriptorType>ToCloseToken</DescriptorType>
    <DescriptorRecognition>StartsWith</DescriptorRecognition>
    <UseForAutoComplete>False</UseForAutoComplete>
  </Descriptor>
  <Descriptor>
    <Token>public</Token>
    <CloseToken />
    <Color>0,0,255</Color>
    <Font>宋体,20</Font>
    <DescriptorType>Word</DescriptorType>
    <DescriptorRecognition>WholeWord</DescriptorRecognition>
    <UseForAutoComplete>True</UseForAutoComplete>
  </Descriptor>
  ...
</DescriptorCollection>


下载地址:/Files/surfsky/SyntaxTextBox.rar

这篇关于发布语法加亮编辑器控件(SyntaxTextBox)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/751009

相关文章

WinForms中主要控件的详细使用教程

《WinForms中主要控件的详细使用教程》WinForms(WindowsForms)是Microsoft提供的用于构建Windows桌面应用程序的框架,它提供了丰富的控件集合,可以满足各种UI设计... 目录一、基础控件1. Button (按钮)2. Label (标签)3. TextBox (文本框

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编

mysql递归查询语法WITH RECURSIVE的使用

《mysql递归查询语法WITHRECURSIVE的使用》本文主要介绍了mysql递归查询语法WITHRECURSIVE的使用,WITHRECURSIVE用于执行递归查询,特别适合处理层级结构或递归... 目录基本语法结构:关键部分解析:递归查询的工作流程:示例:员工与经理的层级关系解释:示例:树形结构的数

Maven 依赖发布与仓库治理的过程解析

《Maven依赖发布与仓库治理的过程解析》:本文主要介绍Maven依赖发布与仓库治理的过程解析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录Maven 依赖发布与仓库治理引言第一章:distributionManagement配置的工程化实践1

Java使用Stream流的Lambda语法进行List转Map的操作方式

《Java使用Stream流的Lambda语法进行List转Map的操作方式》:本文主要介绍Java使用Stream流的Lambda语法进行List转Map的操作方式,具有很好的参考价值,希望对大... 目录背景Stream流的Lambda语法应用实例1、定义要操作的UserDto2、ListChina编程转成M

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm