以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [免费开源]cs端集成【语法高亮框】ICSharpCode.TextEditor(虽然它自称代码编辑器),支持编辑,支持VB、SQL、JSON、XML等17种代码高亮,可自定义语法颜色和护眼绿背景色 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=177632) |
||
-- 作者:chen37280600 -- 发布时间:2022/5/29 10:07:00 -- [免费开源]cs端集成【语法高亮框】ICSharpCode.TextEditor(虽然它自称代码编辑器),支持编辑,支持VB、SQL、JSON、XML等17种代码高亮,可自定义语法颜色和护眼绿背景色
1简介 1.1功能说明 ICSharpCode.TextEditor原生是个代码编辑器,但是非常雏形,还需要做大量的xml编写工作。那我就没改动了,只是集成进来做代码高亮,代替之前Highlight.js只能高亮不能编辑的缺陷。 与狐表最新版编辑器对比,不支持代码折叠、代码重排、自动语法提示、自动列名提示等等。没错,就是狐表最好用的功能,它都没有!(但是如果你有能力,你可以在Github里下载源码进行强力的二次开发,把那些功能自己编码实现,这个工具提供好底层框架),那它有啥用? 还是有点用的,它能集成进狐表窗体,能编译发布后使用,能高亮查看与编辑vb、sql、json、xml、Html、Js、Css等,当做是个轻量级的代码编辑框。因为有的人,sql和json配置文件都是编译发布后,外置在Txt或者内置TextBox里修改(尤其是折腾视图的用户),看黑白不是很爽,想优化下的。 主要功能如下: 1. 代码高亮 2. 代码高亮规则自定义 3. 默认支持17种 ASP/XHTML、BAT、Boo、Coco、CSS、C++.NET、C#、HTML、Java、JavaScript、JSON、Lua、Patch、PHP、SQL、TeX、VBNET、XML语法规则 4. 代码编辑器背景色可以自定义 5. 可以嵌入狐表窗体里使用 6. 支持常见的快速复制整行、缩进整行、换行缩进、括号高亮(这点就比TextBox强多啦,编辑器怎么没一些快捷键呢?) 7. 字体设置 8. 自动双击选中词语 1.2Github地址 github地址:https://github.com/netsparker/ICSharpCode.TextEditor ,这个人在原生基础上,修复了滚动条不隐藏的问题。 2安装 2.1 狐表添加外部引用 dll下载地址(在文章结尾有) 2.1 放好自定义亮语法文件 刚才的压缩包解压后,还有一个文件夹,按照这样路径存放 2.2添加全局代码 Public Sub IC_TextChanged(ByVal sender As ICSharpCode.TextEditor.TextEditorControl, ByVal e As System.EventArgs) \'把对象传递到自定义内部函数维护,这样改功能,就不需要重启项目 Functions.Execute("Handle_IC_TextChanged", sender) End Sub 2.3添加自定义内部函数 函数名:Handle_IC_TextChanged \'当代码编辑器TextChanged后触发,可以通过Name来判断是哪个代码编辑器的事件 Dim e As ICSharpCode.TextEditor.TextEditorControl = Args(0) \'MessageBox.Show(e.Name & "监听到变化:" & e.Text ) 3使用说明 3.1窗口初始化 添加一个Panel面板,待会我们用它做容器,把代码编辑器填充进去 窗口的AfterLoad事件: Dim ct As New ICSharpCode.TextEditor.TextEditorControl ct.Dock = System.Windows.Forms.DockStyle.Fill \'填充整个Panel ct.Name = "TextEditor" \'控件名称 ct.Font = New Font("宋体", 10) \'字体设置 ct.Encoding = System.Text.Encoding.Default \'使用系统默认编码方式 AddHandler ct.TextChanged , AddressOf IC_TextChanged \'添加TextChanged变化的事件监听 ct.ShowEOLMarkers = False \'显示换行光标,推荐false ct.ShowHRuler = True \'显示上标尺,推荐true ct.ShowInvalidLines = False \'显示无用空行的标志,推荐false ct.ShowMatchingBracket = True \'显示匹配括号 ct.ShowSpaces = False \'显示空格符 ct.ShowTabs = True \'显示缩进符 ct.ShowVRuler = False \'显示垂直虚拟尺子 ct.ShowHRuler = False \'显示水平虚拟尺子 ct.AllowCaretBeyondEOL = False \'是否允许直接在空白处开始编辑 ct.ConvertTabsToSpaces = True \'用空格符替换tab效果 ct.SetHighlighting("VBNET") \'设置当前高亮语法规则 \'有这些规则:ASP/XHTML,BAT,Boo,Coco,CSS,C++.NET,C#,HTML,Java,JavaScript,JSON,Patch,PHP,SQL,TeX,VBNET,XML Dim pan As WinForm.Panel = e.Form.Controls("Panel1") pan.BaseControl.Controls.Add(ct) 窗口BeforeClose事件: Dim ct As ICSharpCode.TextEditor.TextEditorControl = e.Form.Controls("Panel1").BaseControl.controls("TextEditor") ct.Dispose \'释放内存 3.2写入代码 Dim ct As ICSharpCode.TextEditor.TextEditorControl = e.Form.Controls("Panel1").BaseControl.controls("TextEditor") Dim Code As String Code = "Dim Val1 As Integer = 1" & vbcrlf Code = Code & "Dim Val2 As Integer = 2" & vbcrlf Code = Code & "Dim Sum As Integer = Val1 + Val2" & vbcrlf Code = Code & "Return Sum" ct.Text = Code ct.Refresh \'刷新一下,有时候会渲染延迟 3.3读取代码 Dim ct As ICSharpCode.TextEditor.TextEditorControl = e.Form.Controls("Panel1").BaseControl.controls("TextEditor") MessageBox.Show(ct.Text) 3.4应用自定义高亮语法 高亮语法文件(用VBNET做案例):程序根目录\\Attachments\\Syntax\\VBNET-Mode.xshd 在窗口放个combobox 应用语法的按钮代码: Dim synDir As String = ProjectPath & "Attachments\\Syntax" Dim ct As ICSharpCode.TextEditor.TextEditorControl = e.Form.Controls("Panel1").BaseControl.controls("TextEditor") Dim cb1 As WinForm.ComboBox = e.Form.Controls("ComboBox_语法颜色") If cb1.Text <> "" Then If FileSys.DirectoryExists(synDir) Then Dim fsmProvider = New ICSharpCode.TextEditor.Document.FileSyntaxModeProvider(synDir) ICSharpCode.TextEditor.Document.HighlightingManager.Manager.AddSyntaxModeFileProvider(fsmProvider) ct.SetHighlighting(cb1.Text) Else MessageBox.Show(synDir & "不存在") End If Else MessageBox.Show("请先选择语法") End If 这样你每次改了语法文件,直接点这个应用按钮,就立刻生效了 3.5通过Leave获取代码结果 由于我们嵌入在Panel面板,所以可以监听Leave事件,当鼠标点击其他地方后,就立刻获取内容 Leave事件: Dim ct As ICSharpCode.TextEditor.TextEditorControl = e.Form.Controls("Panel1").BaseControl.controls("TextEditor") MessageBox.Show(ct.Text) 3.6通过TextChanged监听代码变化 在安装代码里,已经把Textchanged事件绑定到全局事件IC_TextChanged里,并且把变化对象也传递到内部函数Handle_IC_TextChanged,所以我们只需要在内部函数维护触发的事情即可。 如果有多个代码编辑器,可以设置不同的Name,然后在内部函数里判断,再做相应处理 4其他常见的代码高亮效果 4.1 SQL高亮 4.2 Json高亮 4.3 XML高亮 4.4 Html高亮 4.5 JavaScript高亮 4.6 Css高亮 4.7 Bat高亮 5完整案例下载 需要Foxtable≥20210529版本 以下内容只有回复后才可以浏览 ===================================================================== 杰哥免费分享的web系统 =============================================================== 顺便总结以前分享过的帖子,方便大家学习 联系QQ:2385350359 经验分享: [此贴子已经被作者于2024/6/5 18:04:48编辑过]
|
||
-- 作者:liufucan -- 发布时间:2022/5/29 10:21:00 -- 太牛 |
||
-- 作者:playmal -- 发布时间:2022/5/29 17:22:00 -- 牛?????????????????????? |
||
-- 作者:chen_sheng -- 发布时间:2022/5/30 0:22:00 -- 看看 |
||
-- 作者:laipiwen -- 发布时间:2022/5/30 9:14:00 -- 杰哥厉害,谢谢分享 |
||
-- 作者:linyunu1 -- 发布时间:2022/5/30 15:56:00 -- 顶一个,真是太厉害了 |
||
-- 作者:liutlk -- 发布时间:2022/5/31 11:10:00 --
|
||
-- 作者:tongliaozyr -- 发布时间:2022/5/31 12:20:00 -- 不错,力挺! |
||
-- 作者:浙江仔 -- 发布时间:2022/6/1 10:50:00 -- 杰哥出品,必属精品 |
||
-- 作者:aix -- 发布时间:2022/6/1 12:36:00 -- |