【问题标题】:Highlighting a line in a RichTextBox1, line number = a variable突出显示 RichTextBox1 中的一行,行号 = 一个变量
【发布时间】:2016-12-29 08:25:33
【问题描述】:

我有一个变量,假设它 = 5,然后我希望行号 5 在我的 RichTextBox1 中突出显示为“蓝色”。这可能吗?

或者我应该使用 ListBox、DataGridView 等。

【问题讨论】:

  • 这是 WPF 还是 Windows 窗体还是 Windows 通用?
  • 如果这是 winforms 是的,这是可能的。你能告诉我们你尝试了什么..?也做一个简单的谷歌搜索,你会发现大量的答案..stackoverflow.com/questions/14765947/…
  • 是的,它是 Windows 窗体应用程序,到目前为止,我还没有真正尝试过任何东西。我是 C# 新手
  • so far i haven't try anything really. i am new to C# 不够好,如果您可以找到/导航到Stackoverflow,那么您应该能够执行简单的谷歌搜索。这不是代码工厂网站..

标签: c# winforms richtextbox


【解决方案1】:

如果WordWrap 关闭,这将突出显示RichTextBox 中给定行中的文本:

void highLightALine(RichTextBox rtb, int line, Color hiLight)
{
    int i1 = rtb.GetFirstCharIndexFromLine(line);
    int i2 = rtb.GetFirstCharIndexFromLine(line + 1);
    if (i2 < 0) i2 = rtb.Text.Length;

    rtb.SelectionStart = i1;
    rtb.SelectionLength = i2 - i1;
    rtb.SelectionBackColor = hiLight;
}

请注意,如果WordWrap 为真,它仍会突出显示该行,但仅在可见的范围内。它在下一行的延续不会改变。

另请注意,只能突出显示Text无法突出显示尾随空白 afaik。 Here 是尝试所有者绘制 RTB 子类的示例。

【讨论】:

  • 我应该将“rtb”替换为我的 RichTextBox“richTextBox1”的名称吗?
  • 我试过这个 void highLightALine(RichTextBox richTextBox1, int line, Color hiLight) { richTextBox1.SelectionStart = 5; richTextBox1.SelectionLength = 6; richTextBox1.SelectionBackColor = hiLight; }
  • 。你应该保持原样!您只需 调用 它将您的richttextbox 作为第一个参数插入:highLightALine(richTextBox1, 5, Color.AliceBlue);
  • 不,但我今晚再试一次。
猜你喜欢
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 2015-04-12
  • 2021-01-17
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
相关资源
最近更新 更多