高手进 如何用按钮控制Winform控件中滚动条的位置 顶者有分 Form1中只有一个RichTextBox控件(占满Form),如果RichTextBox内容过多的则有滚动条我想用两个按钮(上移、下移)来控制RichTextBox滚动条的位置(如 点"下移" 滚动条会向下滑动)该怎么做呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 老大,你不是在这个帖子问过类似的问题吗http://topic.csdn.net/u/20110317/12/033b5568-1a00-464b-930c-a4eea25457c9.html 还在做触摸屏呢呵呵?既然是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(); }先把手头工作放放,测试通过后发全部源码 等了半天终于有人回帖了,没注意自己连续占了三层楼没法跟帖了呵呵附源码(简单加了个小逻辑防止按钮点击滚动滚动条的时候出错,具体逻辑根据自己需要改吧)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(); } }} 应该用这个获取当前所在行吧:int line = this.richTextBox1.GetFirstCharIndexOfCurrentLine(); monkey都搞完了,我们顶老!!! 我还是要做PDF控件的阿 既然这个帖子你解决了 给你结贴 我再去开一个帖子 c#如何裁剪图片并保存成新的图片 请帮帮我:存储过程调用问题 求教:主机如何通过GPRS方式发送数据给车载LCD屏显示 内容文字太多怎么实现翻页????? .net 大型项目打包问题 serialport datareceived事件接收,数据不全问题 100求教一个关于时间的问题。 困扰n久的sql问题 菜鸟问题!! 接触c#不久,问一下如何变量来做控件名的引用。怎么不行。 C# SendMessage函数第四个参数的问题 数据库 c#
http://topic.csdn.net/u/20110317/12/033b5568-1a00-464b-930c-a4eea25457c9.html
不用鼠标钩子了,用按钮控制滚动条滚动到某行即可,更加方便高效简单代码如: 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();
}
先把手头工作放放,测试通过后发全部源码
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();
}
}
}
int line = this.richTextBox1.GetFirstCharIndexOfCurrentLine();