C# 使用按钮c滚动到RichTextBox#

C# 使用按钮c滚动到RichTextBox#,c#,winforms,C#,Winforms,如何编写上下滚动到RichTextBox的两个按钮的代码?我尝试的是: private void btnScrollTop_Click(object sender, EventArgs e) { if (rtbDefinitie.SelectionStart >= 30) { rtbDefinitie.SelectionStart -= 30; rtbDefinitie.ScrollToCaret();

如何编写上下滚动到RichTextBox的两个按钮的代码?我尝试的是:

private void btnScrollTop_Click(object sender, EventArgs e) {
            if (rtbDefinitie.SelectionStart >= 30) {
                rtbDefinitie.SelectionStart -= 30;
                rtbDefinitie.ScrollToCaret();
            }
        }
private void btnScrollBottom_Click(object sender, EventArgs e) {
            if (rtbDefinitie.SelectionStart <= 30) {
                rtbDefinitie.SelectionStart += 30;
                rtbDefinitie.ScrollToCaret();
            }
        }
private void btnScrollTop\u单击(对象发送方,事件参数e){
如果(rtbDefinitie.SelectionStart>=30){
rtbDefinitie.SelectionStart-=30;
rtbFinitie.ScrollToCaret();
}
}
私有void btnscrollbooth\u单击(对象发送方,事件参数e){

如果(rtbDefinitie.SelectionStart第二次单击似乎被解释为双击,那么您也可以注册此事件并将相同的代码放在后面(或者将
30
替换为
60

编辑: 如果应用程序出现问题,因为它正在工作并且没有时间更新GUI,您可以尝试在每次引发Clickevent后调用
Application.DoEvents();

private void btnScrollBottom_Click(object sender, EventArgs e) {
            if (rtbDefinitie.SelectionStart <= rtbDefinitie.TextLength) {
                rtbDefinitie.SelectionStart += 30;
                rtbDefinitie.ScrollToCaret();
                Application.DoEvents();
            }
        }
private void btnscrollbooth\u单击(对象发送方,事件参数e){

如果(rtbDefinitie.selections开始问题是,第二次单击被注册为双击。我没有如何避免这种情况的经验。也许在按下按钮时启动一个运行的计时器更容易。卡住到底是什么意思?请详细描述您的问题!@Casperah:或者为DoubleClic注册相同的处理程序k事件。@Pilgerstorfer Franz在我按下向下滚动按钮两次之后,如果我再次按下它,则什么也不会发生;在此之后,如果我按下向上按钮,则向下滚动按钮只工作一次(它只滚动一行)。在我按下向下滚动按钮两次之后,当我再次按下它时,什么也不会发生。我认为这是因为If子句:(rtbDefinitie.Selectionstart