原本是白色背景黑色文字,但是想改成vs样式的,但是 ICSharpCode.TextEditor 不提供设置方法或接口
找了好几个小时最后发现要在对应语法配置文件里面去设置
比如:c#
打开文件 CSharp-Mode.xshd
在 Environment 节点里面添加对应的设置既可。
例如 Default 就是默认背景颜色和前景颜色
LineNumbers 是旁边显示行号的地方
<SyntaxDefinition name = "C#" extensions = ".cs">
<Environment>
<Custom name="TypeReference" bold="false" italic="false" color="#04ABAB" />
<Custom name="UnknownEntity" bold="false" italic="false" color="#AB0404" />
<Default color = "#dcdcdc" bgcolor = "#1e1e1e"/>
<LineNumbers color = "#2b91af" bgcolor = "#1e1e1e"/>
</Environment>
踩过的一个坑:.xshd 文件是用 xml 解析的,内部不能有 xml 的注释行 <!-- -->,因为这个也会被解析为xml节点,但由于没内容,所以解析会出错。
至于 Default LineNumbers 出处,Src\Document\HighlightingStrategy 构造方法 public DefaultHighlightingStrategy(string name) 里
environmentColors["Default"] = new HighlightBackground("WindowText", "Window", false, false);
environmentColors["Selection"] = new HighlightColor("HighlightText", "Highlight", false, false);
environmentColors["VRuler"] = new HighlightColor("ControlLight", "Window", false, false);
environmentColors["InvalidLines"] = new HighlightColor(Color.Red, false, false);
environmentColors["CaretMarker"] = new HighlightColor(Color.Yellow, false, false);
environmentColors["CaretLine"] = new HighlightBackground("ControlLight", "Window", false, false);
environmentColors["LineNumbers"] = new HighlightBackground("ControlDark", "Window", false, false);
environmentColors["FoldLine"] = new HighlightColor("ControlDark", false, false);
environmentColors["FoldMarker"] = new HighlightColor("WindowText", "Window", false, false);
environmentColors["SelectedFoldLine"] = new HighlightColor("WindowText", false, false);
environmentColors["EOLMarkers"] = new HighlightColor("ControlLight", "Window", false, false);
environmentColors["SpaceMarkers"] = new HighlightColor("ControlLight", "Window", false, false);
environmentColors["TabMarkers"] = new HighlightColor("ControlLight", "Window", false, false);
默认:
修改后: