找不到RichTextBox.SelectionStart

时间:2015-10-28 13:57:00

标签: wpf xaml textbox richtextbox

我的代码是否有特殊原因允许我以编程方式在RichTextBox中设置SelectionStart和SelectionLength?

            text = System.IO.File.ReadAllText(path);
            prompterText.AppendText(File.ReadAllText(@path));
            prompterText.FontSize = textSize;
            prompterText.HorizontalAlignment = HorizontalAlignment.Center;
            prompterText.Focus();

            this.prompterText.SelectionStart = 0;
            this.prompterText.SelectionLength = 50;
            this.prompterText.SelectionBrush = System.Windows.Media.Brushes.Aqua ;

在选择起始线时,它告诉我" RichTextBox不包含SelectionStart的定义,并且没有接受RichTextBox作为第一个参数的扩展方法可以找到" 。

这很奇怪,因为我发现很多代码示例在RichTextBox上使用完全相同的行。

    <ScrollViewer x:Name="scroller" Margin="0">
        <RichTextBox x:Name="prompterText" Margin="10" IsReadOnly="False"/>
    </ScrollViewer>

在XAML代码中,我将IsReadOnly设置为false以确保我有访问但仍然存在同样的问题。

我的目的是在提示器类型窗口中运行文本选择以设置特定的阅读器速度。

1 个答案:

答案 0 :(得分:2)

RichTextBox SelectionStart属性仅在winforms中可用。对于WPF,我们需要使用TextPointer来进行选择。请参阅以下代码。

 prompterText.AppendText("1111111111111111111111111111111111111111111111111111111111111111111111");           
        prompterText.HorizontalAlignment = HorizontalAlignment.Center;
        prompterText.Focus();
        TextPointer text = prompterText.Document.ContentStart;
        while (text.GetPointerContext(LogicalDirection.Forward) != TextPointerContext.Text)
        {
            text = text.GetNextContextPosition(LogicalDirection.Forward);
        }
        TextPointer startPos = text.GetPositionAtOffset(0);
        TextPointer endPos = text.GetPositionAtOffset(10);            
        prompterText.Selection.Select(startPos, endPos);
        this.prompterText.SelectionBrush = System.Windows.Media.Brushes.Aqua;