社区
C#
帖子详情
关于Syntax Highlight, (chestnuts (橙子鸟) 进)
Tangheng2002
2003-08-06 12:07:40
我希望知道多一点关于RichTextBox上面Syntax Highlight 的信息,应用于Windows form
e_mail: danpeng1000@sina.com
谢谢
http://expert.csdn.net/Expert/TopicView3.asp?id=1411653
...全文
72
9
打赏
收藏
关于Syntax Highlight, (chestnuts (橙子鸟) 进)
我希望知道多一点关于RichTextBox上面Syntax Highlight 的信息,应用于Windows form e_mail: danpeng1000@sina.com 谢谢 http://expert.csdn.net/Expert/TopicView3.asp?id=1411653
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Tangheng2002
2003-08-13
打赏
举报
回复
好,多给你加了点分,有条件的,我还需要详细的注释,同时效率要高
chestnuts
2003-08-13
打赏
举报
回复
发给你了!
有什么问题MSN联系
我的MSN账号:csharpsharper@yahoo.com.cn
可不是雅虎通哦!!!
记住了!!
赫赫~~~~
随时在线
chestnuts
2003-08-11
打赏
举报
回复
给个提示好了~~
大家知道Windows消息吗?
chestnuts
2003-08-11
打赏
举报
回复
我来了!这个分数只有我拿才符合哦~~!!!
史上最简单最Super的解决办法只有我才有哦!
而且不会flicker闪烁哦!
而且跟sharpdeveloper一样的效果哦!!
想要吗??
真地想要吗?
我要一百五十分~~
我很少来的~~来了就多拿分吧~
Tangheng2002
2003-08-07
打赏
举报
回复
up
TheAres
2003-08-06
打赏
举报
回复
静态高亮度显示的代码在后面,
如果要功能更复杂,可以研究一下这个C#的IDE编辑器的代码。
http://www.icsharpcode.net/OpenSource/SD/Default.aspx
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace TheAres.SqlHighLightText
{
/// <summary>
/// Form4 摘要说明。
/// </summary>
public class Form4 : System.Windows.Forms.Form
{
private System.Windows.Forms.RichTextBox sqlRichTextBox;
private System.Windows.Forms.Button button1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form4()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.sqlRichTextBox = new System.Windows.Forms.RichTextBox();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// sqlRichTextBox
//
this.sqlRichTextBox.Location = new System.Drawing.Point(56, 32);
this.sqlRichTextBox.Name = "sqlRichTextBox";
this.sqlRichTextBox.Size = new System.Drawing.Size(304, 208);
this.sqlRichTextBox.TabIndex = 0;
this.sqlRichTextBox.Text = "select * from table1";
//
// button1
//
this.button1.Location = new System.Drawing.Point(408, 64);
this.button1.Name = "button1";
this.button1.TabIndex = 1;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form4
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(528, 294);
this.Controls.Add(this.button1);
this.Controls.Add(this.sqlRichTextBox);
this.Name = "Form4";
this.Text = "Form4";
this.ResumeLayout(false);
}
#endregion
public static void Main()
{
Application.Run( new Form4() );
}
private void HighLightText()
{
string[] keywords = {"select","distinct","from",
"where","order","by","group",
"sum"," is ","null","isnull"};
string[] functions = {"isnull","count","sum"};
string[] strings = {@"'((.|\n)*?)'"};
string[] whiteSpace = {"\t","\n"," "};
this.sqlRichTextBox.SelectAll();
this.sqlRichTextBox.SelectionColor = Color.Black;
this.HighLightText(keywords,Color.Blue);
this.HighLightText(functions,Color.Magenta);
this.HighLightText(strings,Color.Red);
this.HighLightText(whiteSpace, Color.Black);
}
private void button1_Click(object sender, System.EventArgs e)
{
HighLightText();
}
private void HighLightText(string[] wordList, Color color)
{
foreach (string word in wordList)
{
Regex r = new Regex(word,RegexOptions.IgnoreCase);
foreach(Match m in r.Matches( this.sqlRichTextBox.Text ) )
{
this.sqlRichTextBox.Select(m.Index,m.Length);
this.sqlRichTextBox.SelectionColor = color;
}
}
}
}
}
ddy2000
2003-08-06
打赏
举报
回复
学习
Tangheng2002
2003-08-06
打赏
举报
回复
我后来用了for循环替代foreach
3秒
还是太慢
Tangheng2002
2003-08-06
打赏
举报
回复
实际上班门斧,你在另外一个帖子中也回答过我类似的问题,非常感谢你上次的提示
不过实际上我这一次的提问更想得到的是高效的逻辑
我在richtextbox里做Color Syntax的时候,是这样的逻辑
把text按照行分开(Regex.Split(text,"\n"))
|
循环判断每一行是否是注释(比如//)
|
是则取出//前面的字符串(将包括//后面的字符串及其index纪录进一个ArrayList),否则取出整个的字符串
|
然后用正则表达式将取出的字符串分成单个单词与KeyWord字符串数组进行匹配
|
匹配成功则纪录进另一个ArrayList中
|
最后是遍历这两个ArrayList,用RichTextBox的Select来改变颜色
我之所以用两个ArrayList,是因为暴露给外面的KeyColor和CommentColor两个属性,可以在
RunTime下选择Color来改变高亮的颜色,当我改变颜色的时候,前面一些匹配的工作就可以不用作了。
可是我发现,最后的一步和ArrayList相关的动作,却花了将近30秒(text大致有1000行)
这是代码:
HighlightWord[] highlighword = (HighlightWord[])arrInput.ToArray(typeof(HighlightWord));
foreach(HighlightWord obj in highlighword)
{
this.Select(obj.index,obj.length);
}
我希望能找到好的逻辑来解决。
libcurl下载大文件
源码链接: https://pan.quark.cn/s/8ddf8a1c92f9 **libcurl用于获取大型文件**libcurl作为一个开源的C语言库,提供了一系列的API来处理与URL相关的任务,涵盖了HTTP、FTP、SMTP等多种网络协议的应用。在执行大型文件的下载操作时,libcurl展现出卓越的性能表现和高度的灵活性,能够高效地管理大文件传输过程,有效预防内存溢出及其他潜在问题。**libcurl的基础操作**libcurl的基础应用包括以下几个环节:1. **初始化**:需要借助`curl_global_init()`函数来启动libcurl的工作环境。2. **建立会话句柄**:通过`curl_easy_init()`函数创建一个会话句柄,该句柄将用于后续所有的操作流程。3. **配置选项**:运用`curl_easy_setopt()`函数来设定多种参数,例如目标URL、超时时间、重试次数以及数据写入的回调函数等。4. **执行请求**:调用`curl_easy_perform()`函数来实施下载操作。5. **释放资源**:使用`curl_easy_cleanup()`函数来释放已经占用的资源。**获取大型文件时的重要设置**1. **数据写入回调函数**:在处理大型文件下载时,通常不希望一次性将整个文件载入内存。可以配置`CURLOPT_WRITEFUNCTION`选项,指定一个回调函数来处理接收到的数据片段,这样libcurl在接收到数据时会调用该函数,使得我们可以按需将数据写入文件或缓冲区。2. **缓冲策略**:可以设定缓冲区的大小(比如,通过`CURLOPT_BUFFERSIZE`),来控制每次接收数据的数量,从而优化内存...
200ZJ-65 渣浆泵.rar
200ZJ-65 渣浆泵.rar
领导力融合鬼谷子决篇与三略审权变/差德行的三维决策系统:用于解决管理中的犹豫、误判与用人失误
内容概要:本文档整合了《鬼谷子·决篇》与《三略·审权变第三》《差德行第四》三大古代智慧典籍,构建了一套“决策+形势+用人”三位一体的领导力提升体系。通过28天三合实战路径、三维诊断工具、9个实用模板及独特的“身体锚点”仪式,系统解决管理者在决策犹豫、形势误判、人岗错配等方面的痛点。全文涵盖理论溯源、方法论拆解(如三步决策法、审权变四步法、差德行四步法)、历史案例对照(范蠡 vs 项羽)以及跨资源联动建议,形成从认知到实践的完整闭环。; 适合人群:中基层管理者、创业者、职场
进
阶者,尤其是面临决策困境、环境适应困难或团队用人问题的人群;具备一定管理经验或自我提升意识的个体亦可受益。; 使用场景及目标:① 提升重大事项的决策质量,避免反复纠结与事后后悔;② 增强对外部环境变化的敏感度与应对能力,实现灵活调整;③ 科学评估人才德才素质,实现人岗精准匹配,减少用人失误;④ 构建个人化的决策-应变-用人标准化流程(SOP)。; 阅读建议:建议按照28天路径逐步实践,结合自测表定位短板,优先突破薄弱模块;配套工具模板需实际填写使用,配合身体锚点仪式强化行为记忆;可与“诸葛亮决策术”“立将威信术”等单品联动,全面提升领导力体系。
微信支付V3 Java jsApi 扫码支付示例
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 本人近期参与了微信支付的实现工作,先前上传的关于单个微信jsapi的java版本demo已经被重新整理,涵盖了扫码支付和jsapi支付两种模式的demo,代码内容详尽,对于诸多易错环节均添加了注释说明,同时提供了报错时后台与前台的代码demo,前台部分包含了二维码生成的demo,此外还新增了java版本处理微信支付回调通知的代码demo,该整合版本汇集了近期项目中所遇到的所有相关难题及其解决方案,若存在疑问,欢迎联系我。
240m3发酵罐.rar
240m3发酵罐.rar
C#
111,131
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章