繁体   English   中英

如果存在文本,请在Richtextbox中突出显示整行

[英]Highlight entire line in Richtextbox if a text is present

在此处输入图片说明

我试图突出显示RichTextBox中的特定行,如图所示。

int ptrsize = 10;
int* linenum; 
for (int i = 0; i < ptrsize; i++)
{           
    int value = (linenum[i]) * 10;
    string searchText = value.ToString();
    int indexToText = richTextBox.Find(searchText);
    int endIndex = searchText.Length;
    richTextBox.Select(indexToText, endIndex);
    richTextBox.SelectionColor = Color.Blue;
}

如果有文字(即2010年),我想突出显示整行。

2010 19.5 7.37 105 0.67 0.26 0.69

如果包含给定的文本,这将突出显示给定的行:

void highlightLineContaining(RichTextBox rtb, int line, string search, Color color)
{
    int c0 = rtb.GetFirstCharIndexFromLine(line);
    int c1 = rtb.GetFirstCharIndexFromLine(line+1);
    if (c1 < 0) c1 = rtb.Text.Length;
    rtb.SelectionStart = c0;
    rtb.SelectionLength = c1 - c0;
    if (rtb.SelectedText.Contains(search))
        rtb.SelectionColor = color;
    rtb.SelectionLength = 0;
}

您可能要存储和还原原始Selection

有时更改SelectionBackColor看起来更好。 试试看!

您可以在整个RTB上调用它:

for (int i = 0; i < richTextBox.Lines.Count(); i++)
      highlightLineContaining(richTextBox, i, searchText, Color.Red);

我借助@TaW的代码对先前的代码进行了一些更改。

在此处输入图片说明

for (int j = 0; j < ptrsize; j++)
{
   int value = (linenum[j]) * 10;
   string searchText = value.ToString();
   for (int i = 0; i < richTextBox.Lines.Count(); i++)
      {
         highlightLineContaining(richTextBox, i, searchText, Color.Red);
      }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM