C#向RichTextBox控件最下方写入数据

C#中经常用到RichTextBox控件,用于显示数据,那么如果在写入数据后,让RichTextBox始终得到焦点或让RichTextBox始终显示最下方的最新数据呢?

以前一般用到的方法是使用 Focus 先获取焦点,然后 Select 方法,滚动到最下方,这样效率不免低下,而且多写代码:

richTextBox1.Focus() ;
richTextBox1.Select(richTextBox1.Text.Length, 0);

参考这样的自动滚动到最下方的事件函数:

private void richTextBox1_TextChanged(object sender, EventArgs e)
{//滚动到最下方
    if (richTextBox1.Lines.Length > 8000)
    {
        int n = 3000;
        int start = richTextBox1.GetFirstCharIndexFromLine(0);//第一行第一个字符的索引
        int end = richTextBox1.GetFirstCharIndexFromLine(n);//第n行第一个字符的索引
        richTextBox1.Select(start, end);//选中N行
        richTextBox1.SelectedText = "";//设置前N行的内容为空
    }
     richTextBox1.Focus() ;
     richTextBox1.Select(richTextBox1.Text.Length, 0);
}

实际上有更简单的方法,用 RichTextBox.AppendText 方法追加数据后,只要再设置 RichTextBox 的 HideSelection 属性为 false 即可。

RichTextBox.HideSelection 属性是继承自 TextBoxBase:
“Gets or sets a value indicating whether the selected text in the text box control remains highlighted when the control loses focus.”

当RichTextBox.HideSelection值为
true, the selected text does not appear highlighted when the text box control loses focus;
false, the selected text remains highlighted when the text box control loses focus.
The default is true.

意思就是,当RichTextBox.HideSelection为flase时,无论 RichTextBox 是否获取焦点,RichTextBox控件都将被重点强调并显示,相当于始终有焦点的效果,这样就实现了 RichTextBox.AppendText 追加数据后,自动滚动到最下方的效果了。

时间: 2024-10-24 05:38:36

C#向RichTextBox控件最下方写入数据的相关文章

如何通过WEB程序向客户端ActiveX控件传入参数,同时实现由ActiveX控件向服务器端写入数据?

问题描述 如题 解决方案 解决方案二:该回复于2009-08-19 16:40:29被版主删除

vs2010 winform 程序开发 怎么在richtextbox控件中设置二级标题

问题描述 我的思路是这样的,做一个rtf格式的文件,在里面设置好正文,一级标题,二级标题,三级标题格式,然后在richTextbox控件中读取这个rtf格式的文件,我现在要往这个richtextbox控件中写入文本,怎样设置成设定好的一级标题或二级标题的格式 解决方案 解决方案二:百度rtf格式文件解决方案三:引用1楼sxldfang的回复: 百度rtf格式文件 搜不到,我现在要往这个richtextbox控件中写入文本,怎样设置成设定好的一级标题或二级标题的格式解决方案四:rtf里面弄好格式,

使用 Visual C# .NET 打印 RichTextBox 控件的内容 的问题

问题描述 借此宝地问一下,我按照这个网页的方法打印RichTextBox控件的内容,可是进行到"9.将RichTextBoxPrintCtrl从工具箱拖入Form1."就不对了.还是没有这个控件.请问各位高手如何解决这个问题?http://support.microsoft.com/kb/812425 解决方案

数据绑定 richtextbox-C# Richtextbox控件数据绑定之后,无法正常输入

问题描述 C# Richtextbox控件数据绑定之后,无法正常输入 最近在做winform系统时候遇到一个问题,百思不得其解,希望高手可以帮忙解决一下. 如下所示,有一个richtextbox控件,name是rtbZLBB, 后台有一个类, 是ZLBB,现在将richtextbox绑定到ZLBB对象上,但是在输入内容到richtextbox控件的时候,发现无法正常的追加输入,每一次输入光标都是停留在最前面,请问高手这是为什么?进过分析,把Content属性换成private或protected

RichTextBox 控件的输入法问题

问题描述 我在c#2003winform中使用了richtext控件.在其keydown事件中有有个一句stringx=richtextbox.text;这个语句会导致:当我用紫光拼音在该richtextbox控件中输入汉字时正常,但当我用微软拼音输入法等其他输入法时,输入法丧失了连续用拼音选择多个汉字的能力,而是每次只能输入两个汉字,用户有意见,因为输入法的联想功能丧失了.有没有解决办法? 解决方案 解决方案二:光用这个就能导致?那这句话用来干嘛啊?可不可以在内容发生改变的事件里面用这句?解决

richTextBox 控件的System.StackOverflowException错误问题

问题描述 在一个多线程程序中调用richTextBox老是在运行一段时间后报错代码如下,richText在2000行左右的时候就报错未处理的"System.StackOverflowException"类型的异常出现在System.Windows.Forms.dll中.publicvoidLogAppendLine(System.Windows.Forms.RichTextBoxrichTextBoxRemote,Colorcolor,stringtext){if(richTextBo

用于RichTextBox控件记录日志信息

using System;using System.Collections.Generic;using System.Text;using System.Drawing;using System.Windows.Forms; namespace SPD.ERP.Common{    public class WriteLog    {        public delegate void LogAppendDelegate(Color color, string text);        R

轮循法-C++MSComm控件的定时接收数据怎么实现

问题描述 C++MSComm控件的定时接收数据怎么实现 查了好多资料都是VB的,我想定时的从输入缓冲区中读数,C++如何实现啊,新手求教! 解决方案 我用settimer这个来实现定时,可能是由于ONCOMM事件在缓冲区有数时候就会触发,两者发生冲突阻塞了,有人说还可以多线程实现定时,但是我是新手,有没有哪位前辈遇到这种问题,传授一二?

datepicker-silverlight的DataGrid中添加DatePicker控件使用滚动条滚动数据有误

问题描述 silverlight的DataGrid中添加DatePicker控件使用滚动条滚动数据有误 silverlight的DataGrid中添加DatePicker控件,初始设定DatePicker中的时间,连续使用滚动条滚动,初始设定DatePicker的值会随机改变. <sdk:DataGrid Grid.Row="1" HorizontalAlignment="Stretch" Name="dataGrid1" Vertical