(快速浏览杰哥分享过的所有经验汇总,点击跳转) |
|
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.png
此主题相关图片如下:12.png
此主题相关图片如下:2.png
此主题相关图片如下:3.png
1.2Github地址
2安装
2.1 狐表添加外部引用
dll下载地址(在文章结尾有)
此主题相关图片如下:2.png
2.1 放好自定义亮语法文件
刚才的压缩包解压后,还有一个文件夹,按照这样路径存放
此主题相关图片如下:5.png
2.2添加全局代码
此主题相关图片如下:6.png
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面板,待会我们用它做容器,把代码编辑器填充进去
此主题相关图片如下:7.png
窗口的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 '刷新一下,有时候会渲染延迟
此主题相关图片如下:8.png
3.3读取代码
Dim ct As ICSharpCode.TextEditor.TextEditorControl = e.Form.Controls("Panel1").BaseControl.controls("TextEditor")
MessageBox.Show(ct.Text)
此主题相关图片如下:9.png
3.4应用自定义高亮语法
高亮语法文件(用VBNET做案例):程序根目录\Attachments\Syntax\VBNET-Mode.xshd
此主题相关图片如下:10.png
此主题相关图片如下:11.png
在窗口放个combobox
此主题相关图片如下:12.png
应用语法的按钮代码:
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事件,当鼠标点击其他地方后,就立刻获取内容
此主题相关图片如下:13.png
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,然后在内部函数里判断,再做相应处理
此主题相关图片如下:14.png
此主题相关图片如下:15.png
4其他常见的代码高亮效果
4.1 SQL高亮
此主题相关图片如下:16.png
4.2 Json高亮
此主题相关图片如下:17.png
4.3 XML高亮
此主题相关图片如下:18.png
4.4 Html高亮
此主题相关图片如下:19.png
4.5 JavaScript高亮
此主题相关图片如下:20.png
4.6 Css高亮
此主题相关图片如下:21.png
4.7 Bat高亮
此主题相关图片如下:22.png
5完整案例下载
需要Foxtable≥20210529版本
以下内容只有回复后才可以浏览
=====================================================================
杰哥免费分享的web系统
===============================================================
顺便总结以前分享过的帖子,方便大家学习
[此贴子已经被作者于2024/6/5 18:04:48编辑过]