C# 缓慢自动滚动至RichTextBox的末尾

C# 缓慢自动滚动至RichTextBox的末尾,c#,winforms,scroll,richtextbox,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)

我正在制作一个应用程序,我必须在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();
但我想不断地得到卷轴,而不是瞬间

答复

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

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需要帮助…

当我们无法确定您的申请情况时,很难为您提供帮助。请发布代码,显示您到目前为止得到了什么,您尝试了什么,发生了什么错误,这将使帮助更容易。您可以获得我的代码。如果你知道如何解决这个问题,请告诉我:这些例子是用VB编写的,但应该对你有用。