RichTextBox中的行为不一致.请使用SubString方法进行选择

本文关键字:方法 SubString 行选 选择 请使用 不一致 RichTextBox | 更新日期: 2023-09-27 18:27:56

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

假设我想突出显示the highlight。首先,我找到了the highlight部分的startIndexlength,然后使用RichTextBox.Select(startIndex, length)并给它一些颜色。

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

我该如何解决?

RichTextBox中的行为不一致.请使用SubString方法进行选择

我认为您应该使用RichTextBox:的Find()方法

int nextStartIndex;
public void Find(string keyword){
   int i = richTextBox1.Find(keyword, nextStartIndex, RichTextBoxFinds.None);
   if(i != -1) {
      nextStartIndex = i + keyword.Length;          
   }
}

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

另外,请分享你的代码,我想亲眼看看。如果这是.net的问题,那么我需要复习我的工作。。。

这就是我如何在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);
        }