【问题标题】:Highlight entire line in Richtextbox if a text is present如果存在文本,则在 Richtextbox 中突出显示整行
【发布时间】:2015-05-10 09:41:15
【问题描述】:

我正在尝试突出显示 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

【问题讨论】:

标签: c# winforms richtextbox highlight


【解决方案1】:

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

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);

【讨论】:

    【解决方案2】:

    在@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);
          }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 2015-05-05
      • 2020-12-24
      • 1970-01-01
      • 2018-02-16
      相关资源
      最近更新 更多