我通过Nuget软件包管理器在项目中安装了ScintillaNET软件包。然后,通过添加已安装的Scintilla dll的路径,使Scintilla文本框控件出现在工具框中(通过右键单击工具箱>选择项目>浏览)。我提到我的安装过程是因为在线用户在设置此东西时遇到很多麻烦。现在到真正的问题,当我将控件拖到窗体上时,出现一个文本框,但是即使将Lexer属性设置为cpp,也无法显示语法颜色。如文档中所示以编程方式执行此操作也不起作用。以下是我使用的代码(scintilla是scintilla控件的名称):

 // Configuring the default style with properties
 // we have common to every lexer style saves time.
scintilla.StyleResetDefault();
scintilla.Styles[Style.Default].Font = "Consolas";
scintilla.Styles[Style.Default].Size = 10;
scintilla.StyleClearAll();

// Configure the CPP (C#) lexer styles
scintilla.Styles[Style.Cpp.Default].ForeColor = Color.Silver;
scintilla.Styles[Style.Cpp.Comment].ForeColor = Color.FromArgb(0, 128, 0); // Green
scintilla.Styles[Style.Cpp.CommentLine].ForeColor = Color.FromArgb(0, 128, 0); // Green
scintilla.Styles[Style.Cpp.CommentLineDoc].ForeColor = Color.FromArgb(128, 128, 128); // Gray
scintilla.Styles[Style.Cpp.Number].ForeColor = Color.Olive;
scintilla.Styles[Style.Cpp.Word].ForeColor = Color.Blue;
scintilla.Styles[Style.Cpp.Word2].ForeColor = Color.Blue;
scintilla.Styles[Style.Cpp.String].ForeColor = Color.FromArgb(163, 21, 21); // Red
scintilla.Styles[Style.Cpp.Character].ForeColor = Color.FromArgb(163, 21, 21); // Red
scintilla.Styles[Style.Cpp.Verbatim].ForeColor = Color.FromArgb(163, 21, 21); //   Red
scintilla.Styles[Style.Cpp.StringEol].BackColor = Color.Pink;
scintilla.Styles[Style.Cpp.Operator].ForeColor = Color.Purple;
scintilla.Styles[Style.Cpp.Preprocessor].ForeColor = Color.Maroon;
scintilla.Lexer = Lexer.Cpp;

// Set the keywords
scintilla.SetKeywords(0, "abstract as base break case catch checked continue   default delegate do else event explicit extern false finally fixed for foreach goto if implicit in interface internal is lock namespace new null object operator out override params private protected public readonly ref return sealed sizeof stackalloc switch this throw true try typeof unchecked unsafe using virtual while");


该代码直接来自Scintilla documentation。我正在使用Visual Studio 2013 Express。

最佳答案

这个问题可能已经过时了,可能已经关闭,因为与此同时,在GitHub https://github.com/robinrodricks/ScintillaNET.Demo上创建了Demo项目,该项目涵盖了此示例,并且运行良好。

请参阅中的方法InitSyntaxColoring
https://github.com/robinrodricks/ScintillaNET.Demo/blob/master/ScintillaNET.Demo/MainForm.cs

Screenshot

10-04 20:38