我正在使用FastColoredTextBox在我的最高机密C#项目中引入语法高亮。在OpenFile()方法中,我有以下代码:
try
{
editor.Clear();
editor.InsertText(File.ReadAllText(filename));
editor.OnTextChanged(0, editor.LinesCount - 1);
currFilename = filename;
ChangeWindowLabel();
return true;
}
catch (IOException ex)
{
MessageBox.Show("Failed to open file:\n\n" + ex.Message, Core.Product, MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
但是,我有以下问题:在编辑器中打开文件后,似乎没有应用语法高亮显示。我在编辑器的TextChanged事件中设置了样式规则,我在上面的代码中手动触发:
private void editor_TextChanged(object sender, FastColoredTextBoxNS.TextChangedEventArgs e)
{
e.ChangedRange.ClearStyle(CommentStyle);
e.ChangedRange.SetStyle(CommentStyle, @"!.*(\r\n)?$");
e.ChangedRange.ClearStyle(StartEndStyle);
e.ChangedRange.SetStyle(StartEndStyle, @"^DL (Start|End)(\r\n)?$");
// and so on...
e.ChangedRange.SetFoldingMarkers(@"^\t*For\(.*\)", @"\$\$\$", RegexOptions.Multiline);
}
如何在整个文档中强制重新着色?这是FCTB的错误吗?
答案 0 :(得分:1)
问题在于您的正则表达式,这不是FCTB错误。
替换此行:
e.ChangedRange.SetStyle(StartEndStyle, @"^DL (Start|End)(\r\n)?$");
这一个:
e.ChangedRange.SetStyle(StartEndStyle, @"DL (Start|End)");