C#:FastColoredTextBox在修改编辑器后未更新语法高亮显示.Text属性

本文关键字:语法 更新 高亮 显示 属性 Text FastColoredTextBox 修改 编辑器 | 更新日期: 2023-09-27 18:21:13

我正在使用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错误吗?

C#:FastColoredTextBox在修改编辑器后未更新语法高亮显示.Text属性

问题出在正则表达式上,这不是FCTB错误。

替换此行:

  e.ChangedRange.SetStyle(StartEndStyle, @"^DL (Start|End)('r'n)?$");

这个:

  e.ChangedRange.SetStyle(StartEndStyle, @"DL (Start|End)");