Я знаю, что это довольно старый вопрос, но я подумал, что поделюсь своим решением.Я не уверен, было ли это решение реализовано в AvalonEdit, поскольку на этот вопрос изначально был дан ответ, но я обнаружил, что класс OffsetColorizer на самом деле не выбирает строку: он просто меняет цвет фона строки.выглядит следующим образом:
textEditor.SelectionStart = offset;
textEditor.SelectionLength = length;
Тем не менее, это может быть расширено следующим образом:
public void SelectText(int offset, int length)
{
//Get the line number based off the offset.
var line = textEditor.Document.GetLineByOffset(offset);
var lineNumber = line.LineNumber;
//Select the text.
textEditor.SelectionStart = offset;
textEditor.SelectionLength = length;
//Scroll the textEditor to the selected line.
var visualTop = textEditor.TextArea.TextView.GetVisualTopByDocumentLine(lineNumber);
textEditor.ScrollToVerticalOffset(visualTop);
}
Я считаю, что это решение работает лучше, а не просто окрашивает линию, оно на самом делевыбирает его: это означает, что его можно скопировать с помощью Ctrl + C.
Надеюсь, это поможет людям в будущем.