【问题标题】:How do I highlight syntax errors using ICSharpCode.TextEditor.TextEditorControl?如何使用 ICSharpCode.TextEditor.TextEditorControl 突出显示语法错误?
【发布时间】:2011-09-15 21:22:22
【问题描述】:

我使用ICSharpCode.TextEditor.TextEditorControl 作为我的 DSL 编辑器。当我遇到 DSL 编译错误时,我想突出显示有问题的文本以提供更好的用户体验。但是,我很难找到如何做到这一点。

到目前为止,我发现有一个 ShowInvalidLines 属性,但我看不到将任何行标记为无效的方法。我还看到了LineSegmentHighlightingStrategyHighlightSpanStack 属性,但不确定它们应该如何使用。

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: sharpdevelop icsharpcode


    【解决方案1】:

    要突出显示一段文本,请使用 TextMarker。以下代码用红色波浪线在单词 Error 下划线。

    TextEditorControl textEditor = new TextEditorControl();
    textEditor.Text = "Mark Error";
    
    int offset = 5;
    int length = 5;
    TextMarker marker = new TextMarker(offset, length, TextMarkerType.WaveLine, Color.Red);
    textEditor.Document.MarkerStrategy.AddMarker(marker);
    

    您可以使用任何背景和前景色突出显示文本,TextMarkerType 支持下划线、波浪线或纯色块。

    【讨论】:

    • 不适用于最新的 4.4.2 版本,如果有人可以更新语法会很好。例如,MarketStratagety 已不复存在
    • 最新发布的 ICSharpCode.TextEditor 版本是 3.2.1.6466。这个问题是指较旧的 ICSharpCode.TextEditor 控件。 AvalonEdit 是 SharpDevelop 中包含的较新的文本编辑器,版本为 4.4.2。 AvalonEdit 被重新编写以支持 WPF,并具有非常不同的 API。
    • 我不得不放一个 Refresh() 来强制控件重绘。但是一旦我这样做了,我就可以很好地看到我的多个亮点。
    猜你喜欢
    • 1970-01-01
    • 2013-12-27
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2020-09-02
    • 1970-01-01
    • 2015-01-24
    相关资源
    最近更新 更多