如何在C#的文本框(winform)中实现自动滚屏的功能!!!!!!!!! (请大师赐教) ### 跪求 **** 在线等 如何在聊天室程序里用richTextBox内实现自动滚屏,一直使滚动条保持在最后一条上,无论手动浏览richTextBox内的任何记录,只要收到新的信息,滚动条自动滑到最后一行。user32.dll这个API无法实现上述功能。跪求可以实现上述功能的代码或API。谢谢。在线等!!!!!!!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自动滚屏?使用以下方式就可以把光标设在最后一行:this.richTextBox1.SelectionStart = this.richTextBox1.Text.Length; 有没有EnsureVisible()类似的方法,查查,这个应该不难 TO kssys() 还加上一句回焦点的,这样用户不用再点下鼠标了,(借鉴) 这是这样:this.richTextBox1.SelectionStart = this.richTextBox1.Text.Length;this.richTextBox1.Focus(); tbxResult.SelectionStart = tbxResult.Text.Length-1;tbxResult.ScrollToCaret();这样就可以了 我的程序是一个聊天室程序,不管文本框收到其他人或是我自己发的信息,滚动条都要放在最后一条记录上,可是您的方法我试过之后还是无法实现。To:kssys()。可加我的QQ:3938922 show all of your code 试一下这样定输入控件为txtInput输出控件为richTextBoxrichTextBox.Text += txtInput.Text + "\n" + richTextBox.Text;这样,新输入的值就永远在最顶行了。 昨天的问题还没有解决,我拭了直接有两个文本框输入输出是可以实现的,但是我的程序是输入文本发到服务器,然后服务器解处理后再发回来,在输出的文本框显示,也许这样就不能实现了代码:chartRoom.MsgStruct.message_cluster m = (chartRoom.MsgStruct.message_cluster) e;//实例结构体message_cluster if(m.From.EndsWith(roomID)) { if(m.Body.Trim().Length>0) { if(checkBox2.Checked) { richTextBox1.Text += "\r\n"; richTextBox1.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); richTextBox1.Text += "\r\n"; richTextBox1.Text +=m.FromNick ; switch(m.Type) { case "chat": richTextBox1.Text += " 悄悄对你 说:"; break; case "groupchat": richTextBox1.Text += " 对大家 说:"; break; default: richTextBox1.Text += " 对大家 说:"; break; } richTextBox1.Text += m.Body; richTextBox1.Text += "\r\n"; } } } 昨天好像是我搞错了你试下这个richTextBox1.SelectionStart = richTextBox1.Text.Length-1;richTextBox1.Select(); 在你的程序加入以下代码:richTextBox1.Text += m.Body;richTextBox1.Text += "\r\n";//添加以下代码this.richTextBox1.SelectionStart = this.richTextBox1.Text.Length; this.richTextBox1.ScrollToCaret(); this.richTextBox1.Refresh(); TextBox有个Append还是Apptext方法,记不清了,就是在文本框末尾添加string,可以实现这个功能。记住这是一个方法,名字以App开头,具体是什么记不清楚了。你试试先。 要使用APPTEXT这个方法添加文字,同时还要设置一个控件属性就可以了 顶,要不就是用发送Message,RichtextBox可以滚动而且不用刷新。具体命令记不起了 谢谢各位,我的问题解决了,只需写在richTextBox1_TextChanged事件下就可以了,非常感谢大家,怎么结帖啊 我有个自己写的处理接受文本的事件,以前在那里用user32.dll可以实现的,但是用上诉方法不好用 菜鸟求助 求教关于多个文本框字符串拼接 菜鸟求助,后台值前台取不出来!!! 一个关于datagridview保存新增数据到数据库的问题,高手请进! 请问这样的显示效果是怎么实现的? 访问aspx的时候出现这个错误,请问怎么解决,谢谢 DataGridView 与数据源的同步问题---怎样保证顺序一致? 如果在哈希表里通过value取出KEY值? The value of ESP was not properly saved across a function call 关于数据显示的问题 错误捕获的问题 [大虾们进来看了~~~] C#程序和C++程序通信的问题~~~~~
this.richTextBox1.SelectionStart = this.richTextBox1.Text.Length;
this.richTextBox1.SelectionStart = this.richTextBox1.Text.Length;
this.richTextBox1.Focus();
tbxResult.ScrollToCaret();
这样就可以了
可加我的QQ:3938922
定输入控件为txtInput
输出控件为richTextBox
richTextBox.Text += txtInput.Text + "\n" + richTextBox.Text;
这样,新输入的值就永远在最顶行了。
代码:
chartRoom.MsgStruct.message_cluster m = (chartRoom.MsgStruct.message_cluster) e;//实例结构体message_cluster
if(m.From.EndsWith(roomID))
{
if(m.Body.Trim().Length>0)
{
if(checkBox2.Checked)
{
richTextBox1.Text += "\r\n";
richTextBox1.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
richTextBox1.Text += "\r\n";
richTextBox1.Text +=m.FromNick ;
switch(m.Type)
{
case "chat":
richTextBox1.Text += " 悄悄对你 说:";
break;
case "groupchat":
richTextBox1.Text += " 对大家 说:";
break;
default:
richTextBox1.Text += " 对大家 说:";
break;
}
richTextBox1.Text += m.Body;
richTextBox1.Text += "\r\n"; }
}
}
richTextBox1.SelectionStart = richTextBox1.Text.Length-1;
richTextBox1.Select();
richTextBox1.Text += m.Body;
richTextBox1.Text += "\r\n";//添加以下代码
this.richTextBox1.SelectionStart = this.richTextBox1.Text.Length;
this.richTextBox1.ScrollToCaret();
this.richTextBox1.Refresh();