无法在语法着色之后或之前设置 ScintillaNet 文本样式

Posted

技术标签:

【中文标题】无法在语法着色之后或之前设置 ScintillaNet 文本样式【英文标题】:Cannot Style ScintillaNet Text after or before syntax coloring 【发布时间】:2011-02-22 22:54:53 【问题描述】:
var scin = new Scintilla();
ScintillaHotspotStyle = scin.Styles.LastPredefined.Index + 1;
scin.Margins[0].Width = 20;
scin.Caret.HighlightCurrentLine = true;

scin.Styles[ScintillaHotspotStyle].IsHotspot = true;
scin.Styles[ScintillaHotspotStyle].Underline = true;
scin.Styles[ScintillaHotspotStyle].ForeColor = System.Drawing.Color.Blue;

var contents = File.ReadAllText(file);
scin.Text = contents;

//scin.ConfigurationManager.Language = "cpp";
//scin.ConfigurationManager.Configure();

scin.GetRange(2, 5).SetStyle(ScintillaHotspotStyle);

//scin.ConfigurationManager.Language = "cpp";
//scin.ConfigurationManager.Configure();

注释行的顺序无关紧要,也无关 .Configure() 的调用是否执行 - 结果是相同的:

但是,如果我不应用语法高亮,它确实有效:

Scintilla 非常令人困惑,所以我可能做错了什么 - 但我不确定是什么......

【问题讨论】:

【参考方案1】:

我认为语法hiliting 是在你的工作之后应用的。 或者,如果您阅读 scintilla 文档,似乎热点样式的功能受到限制。

""" 插入符号、选择和热点样式

选择通过更改前景色和/或背景色来显示。如果未设置其中之一,则不会更改该属性以进行选择。默认设置是通过将背景更改为浅灰色并使前景与未选择时相同来显示选择。当没有选择时,当前插入点由文本插入符号标记。这是一条垂直线,通常会闪烁以吸引用户的注意力。 """

你有没有尝试在一个没有语法hilited的区域强制样式hiliting? 以靠近 main 或 print 为例。

并通过设置背景颜色来尝试。

【讨论】:

以上是关于无法在语法着色之后或之前设置 ScintillaNet 文本样式的主要内容,如果未能解决你的问题,请参考以下文章

java lwjgl 2着色器错误

XCode 语法着色损坏

蓝色在相交之前位于绿色之下,而绿色在相交之后位于蓝色之下。但是,我不能为另一半着色,因为蓝色和红色是发散的。

powerbisvg地图无法着色

Spyder:如何导入/导出语法着色方案?

ScintillaNET 控件不显示语法着色?