Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共39 条记录, 每页显示 10 条, 页签: [1] [2][3][4]
[浏览完整版]

标题:[免费开源]cs端集成【语法高亮框】ICSharpCode.TextEditor(虽然它自称代码编辑器),支持编辑,支持VB、SQL、JSON、XML等17种代码高亮,可自定义语法颜色和护眼绿背景色

1楼
chen37280600 发表于:2022/5/29 10:07:00

(快速浏览杰哥分享过的所有经验汇总,点击跳转


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地址
github地址:https://github.com/netsparker/ICSharpCode.TextEditor ,这个人在原生基础上,修复了滚动条不隐藏的问题。

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系统

[杰哥的免费分享]A1迷你库存管理系统,网页版的纯库存管理,实现简单的多人协助出入库,库存统计,权限管理

[杰哥的免费分享]A2迷你产品报价系统,网页版的带图Excel报价单快速生成工具,外贸企业特别常用

[杰哥的免费分享]OA行政管理系统,网页版的OA审批工作流,开放式流程,包含固定资产管理、文具申领库存、报销申请、用印盖章申请、请假申请等常见行政模块

[杰哥的免费分享]造价项目资料和提成管理系统,应用于造价行业,把过程资料归档,设置每个项目的成员提成,一键统计绩效

[杰哥的免费分享]迷你知识库系统,KindEditor富文本框的实战效果,绿色免安装、免管理员权限、免http服务、多人协同编辑,特别适合【网络管理严格的政府国企】

===============================================================
顺便总结以前分享过的帖子,方便大家学习

联系QQ:2385350359


经验分享:





















[此贴子已经被作者于2024/6/5 18:04:48编辑过]
2楼
liufucan 发表于:2022/5/29 10:21:00
太牛
3楼
playmal 发表于:2022/5/29 17:22:00
牛??????????????????????
4楼
chen_sheng 发表于:2022/5/30 0:22:00
看看
5楼
laipiwen 发表于:2022/5/30 9:14:00
杰哥厉害,谢谢分享
6楼
linyunu1 发表于:2022/5/30 15:56:00
顶一个,真是太厉害了图片点击可在新窗口打开查看
7楼
liutlk 发表于:2022/5/31 11:10:00
顶,真是厉害了!
8楼
tongliaozyr 发表于:2022/5/31 12:20:00
不错,力挺!

9楼
浙江仔 发表于:2022/6/1 10:50:00
杰哥出品,必属精品
10楼
aix 发表于:2022/6/1 12:36:00
 
共39 条记录, 每页显示 10 条, 页签: [1] [2][3][4]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03906 s, 3 queries.