RichTextBox.Select与SubString方法之间的行为不一致

时间:2013-08-15 07:34:50

标签: c# winforms richtextbox substring

我正在开发Windows窗体应用程序。我使用RichTextBox.LoadFile方法从文件加载文本并突出显示文本的某些部分。文件中的文本包含返回字符。

假设我想突出显示the highlight。首先,我找到startIndex部分的lengththe highlight,然后使用RichTextBox.Select(startIndex, length)并为其添加一些颜色。

当我使用SubString方法时,我可以找到正确的文字。但是,当我将startIndexlength的相同值应用于Select方法时,突出显示的部分将变为[space][space][space]the highli。它看起来Select方法会考虑一些返回字符并导致一些问题。

我该如何解决?

3 个答案:

答案 0 :(得分:1)

我认为您应该使用Find()的{​​{1}}方法:

RichTextBox

答案 1 :(得分:0)

我第一次听说它并且我经常使用richTextBox。尝试使用SubStringrichTextBox.Text上找到您想要的子字符串,而不是文件中的字符串。如果您已经这样做,请尝试从子字符串方法检查返回数字,看看它是否引用了正确的位置。

另外,请分享您的代码,我想亲眼看看。如果是.net问题那么我需要重新开始工作......

答案 2 :(得分:0)

这就是我在RichTextBox中“搜索”特定文本然后将其突出显示为RED

的方式
private void ColoritRed(RichTextBox rtb, string StringToHighlight)
    {
        int pos = 0;
        string searchText = StringToHighlight;
        pos = rtb.Find(searchText);
        while (pos != -1)
        {
            if (rtb.SelectedText == searchText)
            {
                this.ActiveControl = rtb;
                rtb.SelectionStart = pos;
                rtb.SelectionLength = searchText.Length;
                rtb.SelectionColor = Color.Red;
            }
            pos = rtb.Find(searchText, pos + 1, RichTextBoxFinds.MatchCase);
        }