慢慢滚动并自动滚动到RichTextBox的末尾

时间:2014-05-12 17:35:25

标签: c# winforms scroll richtextbox

我正在创建一个应用程序,我必须在RichTextBox中添加某些警告。目标是使其自动减速,以便用户可以阅读警告。我已经研究过自动滚动到最后,但我想要的是慢慢滚动直到richtextbox的结尾。

这是我的代码

foreach (var item in MyService.GetAviso()) 
{
  RTB_Avisos.Text = RTB_Avisos.Text + item.ToString() + Environment.NewLine;
  if (aux_Avisos == 2)
  {
    RTB_Avisos.Text = RTB_Avisos.Text + Environment.NewLine;
    aux_Avisos = 0;
  }
  else
   aux_Avisos++;

  RTB_Avisos.SelectionStart = RTB_Avisos.Text.Length;
  RTB_Avisos.ScrollToCaret();
}

我有

RTB_Avisos.SelectionStart = RTB_Avisos.Text.Length;
RTB_Avisos.ScrollToCaret();

但我希望不断地立即获得滚动。

ANSWER

经过长时间的搜索,我找到答案,这不是最好的方法,但它是一个解决方案。您可以创建计时器,当他tick放置该代码时:

private void timer3_Tick(object sender, EventArgs e)
    {

        order = linePos == RTB_Avisos.Lines.Length - 1 ? -1 : linePos == 0 ? 1 : order;

        linePos += order;

        int offset = 0;

        for (int i = 0; i < linePos && i < RTB_Avisos.Lines.Length; i++)
            offset += RTB_Avisos.Lines[i].Length + 1;

        RTB_Avisos.Focus();
        RTB_Avisos.Select(offset, 0);
    }

此代码将对行进行计数,并以确定的时间间隔减慢速度。当我们得到最后一行RTB时,回到开头。

Ty求救......

0 个答案:

没有答案