【问题标题】:How do i color the first line only in a richTextBox1 in Red?如何仅在红色的richTextBox1 中为第一行着色?
【发布时间】:2014-07-07 05:21:20
【问题描述】:
richTextBox1.Select(0, richTextBox1.Lines[0].Length);
richTextBox1.SelectionColor = Color.Red;

第一次只有第 0 行,richTextBox1 中的第一行是红色的。 但是我每 X 秒在一个计时器滴答事件中调用此行,并且在下一次它将richTextBox1 中的所有文本着色为红色。

我如何使它只在第一行保持红色着色? (行[0])

编辑

这是一个方法中的完整代码,我从计时器滴答事件中每隔 x 秒调用一次该方法:

private void CombindedStringFix()
{
     scrollerList = new List<string>(TextExtractor.newTextWithoutLinks);
     scrollerText = string.Join(Environment.NewLine, scrollerList);
     combindedString = string.Join(Environment.NewLine, newText);
     scroller1.TextToScroll = scrollerText;
     richTextBox1.Text = combindedString.TrimStart();
     richTextBox1.Refresh();
     string[] rlines = richTextBox1.Lines;
     richTextBox1.SelectionStart = 0;
     richTextBox1.SelectionLength = rlines[0].Length;
     richTextBox1.SelectionColor = Color.Red;
     richTextBox1.Select(rlines[0].Length, rlines[1].Length + 1);
     richTextBox1.SelectionColor = Color.Green;
}

第一次将顶部的第一行染成红色,第二个顶部的行染成绿色。 但在下一个计时器迭代中,它会将richTextBox1 中的所有文本都染成红色。

【问题讨论】:

  • 这对我来说很好。
  • 对我来说也很好用。你在干什么。您是否每次都设置整个文本而不是使用 AppendText?
  • P.K 更新了我的问题。 '不确定这是否是问题,但这是我每 x 秒从计时器滴答事件调用的方法,也是我想为线条着色的地方。现在的代码是一样的,如果它像之前一样,它第一次将线条着色为红色和绿色,但在下一个计时器滴答事件中,它会将所有文本着色为红色。
  • [如何在richtextbox中使用多色?][1] [1]:stackoverflow.com/questions/13220856/…

标签: c# .net winforms


【解决方案1】:

当您替换 RichTextBox 控件的 Text 属性时,您并没有替换当前格式。控件第一个字符的格式在第一次通过时设置为红色。当您在后续调用中替换控件的 Text 时,它会获取该值并将其应用于控件中的其余文本。

要解决该问题,请先使用 Clear() 方法:

richTextBox1.Clear();
richTextBox1.Text = combindedString.TrimStart();

【讨论】:

    猜你喜欢
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多