Form1中只有一个RichTextBox控件(占满Form),如果RichTextBox内容过多的则有滚动条
我想用两个按钮(上移、下移)来控制RichTextBox滚动条的位置(如 点"下移" 滚动条会向下滑动)
该怎么做呢?

解决方案 »

  1.   

    老大,你不是在这个帖子问过类似的问题吗
    http://topic.csdn.net/u/20110317/12/033b5568-1a00-464b-930c-a4eea25457c9.html
      

  2.   

    还在做触摸屏呢呵呵?既然是richtextbox,我有一个好点的思路了:
    不用鼠标钩子了,用按钮控制滚动条滚动到某行即可,更加方便高效简单代码如:        private void button1_Click(object sender, EventArgs e)
            {
                int line = currentlines+2;//当前行往下两行
                  int start = this.richTextBox1.GetFirstCharIndexFromLine(line);
                this.richTextBox1.SelectionStart = start;
                this.richTextBox1.ScrollToCaret();
            }
    先把手头工作放放,测试通过后发全部源码
      

  3.   

    等了半天终于有人回帖了,没注意自己连续占了三层楼没法跟帖了呵呵附源码(简单加了个小逻辑防止按钮点击滚动滚动条的时候出错,具体逻辑根据自己需要改吧)using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace 控制rtb滚动
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private int currentlines = 0;   //定义当前行,初始化为0
            private void btn_goup_Click(object sender, EventArgs e)
            {
                currentlines -=2;   //当前行往下两行
                if (currentlines < 0)   //防止滚动出界,如果currentlines小于0会提示异常
                {
                    currentlines = 0;
                }
                int start = this.richTextBox1.GetFirstCharIndexFromLine(currentlines);
                this.richTextBox1.SelectionStart = start;
                this.richTextBox1.ScrollToCaret();            
            }        private void btn_godown_Click(object sender, EventArgs e)
            {
                if (currentlines < 0)
                {
                    currentlines = 0;
                }
                else if (currentlines >= richTextBox1.Lines.Length)
                {
                    currentlines = richTextBox1.Lines.Length+1;
                }
                else
                {
                    currentlines += 2;//当前行往下两行
                }
                int start = this.richTextBox1.GetFirstCharIndexFromLine(currentlines);
                this.richTextBox1.SelectionStart = start;
                this.richTextBox1.ScrollToCaret();
            }
        }
    }
      

  4.   

    应该用这个获取当前所在行吧:
    int line = this.richTextBox1.GetFirstCharIndexOfCurrentLine();
      

  5.   

    monkey都搞完了,我们顶老!!!
      

  6.   

    我还是要做PDF控件的阿 既然这个帖子你解决了 给你结贴 我再去开一个帖子