【问题标题】:Best practice: creating a script editor最佳实践:创建脚本编辑器
【发布时间】:2024-05-02 06:30:02
【问题描述】:

我已经开发了自己的脚本语言来用一些独特的逻辑查询我的数据源,我想向我的用户提供这个脚本,并希望在一个文本框中显示它,他们可以在其中输入语法并通过颜色接收反馈他们正在输入的文本,例如,我想要很多像 .net 一样的颜色代码,即我想要蓝色关键字、绿色 cmets 等。

我想问的是,是否有某种方法可以在不使用 3rd 方组件的情况下对我的文本进行颜色编码,特别是如果按使用付费,但总的来说我更喜欢使用 .net 控件。

【问题讨论】:

  • 自定义文本框的paint() 事件?
  • 正则表达式 + 富文本框。在 google 上搜索“C# 语法高亮文本框”以获取有关如何执行此操作的示例,您不必使用第三方库,但您至少可以查看示例。不过,这个网站的格式不适合回答这个问题,所以我投票决定关闭它,因为它太宽泛了。
  • @Thomas:你在说什么Paint 事件??? TextBoxes 没有这样的东西!

标签: c# .net components custom-controls rtf


【解决方案1】:

您可以使用 RichTextBox 来获得不同的颜色。

RichTextbox Color

【讨论】:

  • 您好,谢谢。有一个控件很酷,我认为这将使它成为可能。但这意味着有两个盒子并为整条线着色。虽然出于我的需要,我只有一个框(编辑器),并且应该在键入时进行着色,根据我们的逻辑为关键字、变量和其他元素着色。
  • 您可以在 RTB 中随意为每个字符着色。不要在不了解它的基础知识的情况下开始!
  • @Ritardi.Net ,我给了你示例链接来理解 RichTextbox。您必须在用户输入时编写逻辑。明白了吗?
  • @Jigneshk 很清楚,但是您知道在用户键入时更改 RTB 的 SelectedText 属性会发生什么吗?您不能更改它,因为在最好的情况下会阻止用户,而在最坏的情况下,用户会在选定的文本上键入并替换它。
  • 您需要创建一个您在每个 TextChanged 事件上调用的 colorMySkript 函数。它应该 1) 存储选择 2) 进行所有着色 3) 如果有选择则恢复选择。