在我的应用程序中,我有一个带有只读 RichTextBox 的简单窗口。我正在使用 WPF、.NET 6。窗口的目的只是显示应用程序使用的可插入文件的格式化信息。
当窗口启动时,RichTextBox 会以编程方式填充各种可插入文件类型的粗体类别标题,后面是较小普通字体的该类型的文件列表。我实现此目的的方法是将文本附加到 RichTextBox,然后选择附加的文本,然后设置选择字体依赖属性,效果很好。我遇到的问题是在附加文本后选择每一行文本。我尝试过两种方法:
我尝试了几种方法,如“您尝试了什么以及您期望什么?”中所示。部分。
这两种方法的问题是,随着添加更多行,选择的范围也会越来越多。我假设这是因为我的方法使用原始文本而不是 RichTextBox 中的标记。
我已经做了所有我能想到的搜索排列,但都无济于事。任何帮助将不胜感激。
我尝试实现我自己的 WinForms RichTextBox.GetFirstCharIndexOfCurrentLine() 版本,如下所示:
public int GetFirstCharIndexOfCurrentLine()
{
int index = 0;
TextRange textRange = new TextRange(
Document.ContentStart,
Document.ContentEnd
);
var alltext = textRange.Text;
string[] lines = alltext.Replace("\n", "").Split('\r');
int lineIndex = lines.Length - 1;
if (lineIndex > lines.Count())
{
throw new ArgumentOutOfRangeException("lineIndex");
}
for (int i = 0; i < lineIndex; i++)
{
index += lines[i].Length;
}
return index;
}
并且,我尝试按如下方式选择该行的文本:
public void Select(string text)
{
TextRange textRange = new TextRange(Document.ContentStart, Document.ContentEnd);
string alltext = textRange.Text;
int index = alltext.IndexOf(text);
if (index < 0)
{
return;
}
Select(index, text.Length);
}