显然,当我ApplyPropertyValue()
在 a 上使用该功能时RichTextBox
,会Selection.Select
停止正常工作。我有一个 RichTextBox 填充了一些文本。
string selectText(int index, int length)
{
TextRange textRange = new TextRange(TB.Document.ContentStart, TB.Document.ContentEnd);
if (textRange.Text.Length >= (index + length))
{
TextPointer start = textRange.Start.GetPositionAtOffset(index, LogicalDirection.Forward);
TextPointer end = textRange.Start.GetPositionAtOffset(index + length, LogicalDirection.Backward);
TB.Selection.Select(start, end);
return TB.Selection.Text;
}
return null;
}
display.Text = selectText(6, 8);
// display contains the string "arranged"
TB.Selection.ApplyPropertyValue(RichTextBox.ForegroundProperty, "Red");
// display now contains the string "arrang" (should be "arranged")
display.Text = selectText(6, 8);
display
是一个 TextBlock,用于显示用于调试目的的变量值,TB
是一个 RichTextBox。
selectText(i,length)
如果在没有 ApplyPropertyValue() 的情况下使用,函数可以正常工作,并且始终返回TB
.
上述代码执行后,display
包含“arrang”而不是“arranged”。此外,如果我删除 ApplyPropertyValue() 语句,display
将按预期包含“排列”。
ApplyPropertyValue() 怎么了?我在这里错过了什么吗?