如何在聊天室程序里用richTextBox内实现自动滚屏,一直使滚动条保持在最后一条上,无论手动浏览richTextBox内的任何记录,只要收到新的信息,滚动条自动滑到最后一行。user32.dll这个API无法实现上述功能。跪求可以实现上述功能的代码或API。谢谢。
在线等!!!!!!!!!!!

解决方案 »

  1.   

    自动滚屏?使用以下方式就可以把光标设在最后一行:
    this.richTextBox1.SelectionStart = this.richTextBox1.Text.Length;
      

  2.   

    有没有EnsureVisible()类似的方法,查查,这个应该不难
      

  3.   

    TO kssys() 还加上一句回焦点的,这样用户不用再点下鼠标了,(借鉴)
      

  4.   

    这是这样:
    this.richTextBox1.SelectionStart = this.richTextBox1.Text.Length;
    this.richTextBox1.Focus();
      

  5.   

    tbxResult.SelectionStart = tbxResult.Text.Length-1;
    tbxResult.ScrollToCaret();
    这样就可以了
      

  6.   

    我的程序是一个聊天室程序,不管文本框收到其他人或是我自己发的信息,滚动条都要放在最后一条记录上,可是您的方法我试过之后还是无法实现。To:kssys()。
    可加我的QQ:3938922
      

  7.   

    show all of your code
      

  8.   

    试一下这样
    定输入控件为txtInput
    输出控件为richTextBox
    richTextBox.Text += txtInput.Text + "\n" + richTextBox.Text;
    这样,新输入的值就永远在最顶行了。
      

  9.   

    昨天的问题还没有解决,我拭了直接有两个文本框输入输出是可以实现的,但是我的程序是输入文本发到服务器,然后服务器解处理后再发回来,在输出的文本框显示,也许这样就不能实现了
    代码:
    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";                                       }
                                     }
                             }
      

  10.   

    昨天好像是我搞错了你试下这个
    richTextBox1.SelectionStart = richTextBox1.Text.Length-1;
    richTextBox1.Select();
      

  11.   

    在你的程序加入以下代码:
    richTextBox1.Text += m.Body;
    richTextBox1.Text += "\r\n";//添加以下代码
    this.richTextBox1.SelectionStart = this.richTextBox1.Text.Length;
                    this.richTextBox1.ScrollToCaret();
                    this.richTextBox1.Refresh();
      

  12.   

    TextBox有个Append还是Apptext方法,记不清了,就是在文本框末尾添加string,可以实现这个功能。记住这是一个方法,名字以App开头,具体是什么记不清楚了。你试试先。
      

  13.   

    要使用APPTEXT这个方法添加文字,同时还要设置一个控件属性就可以了
      

  14.   

    顶,要不就是用发送Message,RichtextBox可以滚动而且不用刷新。具体命令记不起了
      

  15.   

    谢谢各位,我的问题解决了,只需写在richTextBox1_TextChanged事件下就可以了,非常感谢大家,怎么结帖啊
      

  16.   

    我有个自己写的处理接受文本的事件,以前在那里用user32.dll可以实现的,但是用上诉方法不好用