CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

textbox的使用

楼主Focus_zhao()2000-02-27 12:52:00 在 VB / 基础类 提问

请问各位:如何实现textbox滚动条自动向下滚动?就是像很多聊天软件那样,自己向下滚,把最新输入的字显示出来? 问题点数:50、回复次数:8Top

1 楼Firing_Sky(火的天空)回复于 2000-02-27 15:25:00 得分 5

声明api函数SendMessage,就可以利用  
  SendMessage(RichEdit1.Handle,   EM_SCROLL,   SB_LINEDOWN,   0)  
  实现翻页Top

2 楼jmj()回复于 2000-02-27 18:32:00 得分 5

先声明API函数  
  Public   Declare   Function   SendMessage   Lib   "user32"   Alias   "SendMessageA"   (ByVal   hwnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   lParam   As   Any)   As   Long  
  使用TIME控件,在timer事件中调用  
  lonRet   =   SendMessage(richedit1.hwnd,   WM_VSCROLL,   SB_LINEDOWN,   0)Top

3 楼panda()回复于 2000-02-27 18:33:00 得分 20

我感觉这个textbox只要把multiline属性设置为true  
  scrollbars的属性加上vertical(2)就可以自动往下滚动亚Top

4 楼benbenlittle()回复于 2000-02-27 19:52:00 得分 5

先声明API函数  
  Public   Declare   Function   SendMessage   Lib   "user32"   Alias   "SendMessageA"   (ByVal   hwnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   lParam   As   Any)   As   Long  
  其中   wParam   表示水平移动的行数   若为负值为向左移动.  
  lParam表示垂直移动行数   若为负值为向上移动.  
  不过由于   lParam为any类型,所以若传数值   前面加上一个ByVal  
  例如    
  SendMessage   text.hwnd   EM_LINESCROLL   ,0,ByVal   1  
  即可  
  首先判断   有新的输入,然后调用上面的函数就行了  
  Top

5 楼littletao()回复于 2000-02-28 09:37:00 得分 7

.SelStart   =   Len(.Text)应该能满足要求Top

6 楼dongdong(阿东)回复于 2000-02-28 14:58:00 得分 0

类似聊天室的TEXT方法,可以将TEXT的多行选项设为TRUE,然后在插入文本时,始终插入到最前面,这样,当文字内容超过一页时,就会自动的出现滚动条,并且可以让输入的新内容始终可见,如:  
  text1.selstart=0    
  text1.seltext="hello"  
  不知可否?Top

7 楼Un1()回复于 2000-02-29 14:35:00 得分 3

支持   littletao   ,   不过一个更快的方法是:  
  textbox.selstart=65535Top

8 楼peacock()回复于 2000-03-01 11:37:00 得分 5

加入TextBox控件,设置修改MultiLine   为   True。  
  写入以下代码:  
   
  Const   EM_GETLINECOUNT   =   &HBA  
   
  Private   Declare   Function   SendMessage   Lib   "user32"   Alias   "SendMessageA"   (ByVal   hWnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   ByVal   lParam   As   Long)   As   Long  
   
  Dim   LastLine   As   Long   '最后的行数  
  Dim   LineHeight               '每行的高度  
  Private   Sub   Form_Load()  
  Set   Me.Font   =   Text1.Font  
  LineHeight   =   Me.TextHeight("TT")  
  End   Sub  
   
  Private   Sub   Text1_Change()  
  Dim   Ret   As   Long  
  Ret   =   SendMessage(Text1.hWnd,   EM_GETLINECOUNT,   0,   0&)   '取行数  
  If   Ret   <>   LastLine   Then  
  If   Text1.Height   +   Text1.Top   +   LineHeight   >   Me.ScaleHeight   And   Ret   >   1   Then  
  If   LastLine   <=   Ret   -   1   Then  
  Exit   Sub   '如果已经是最大高度,保持  
  End   If  
  LastLine   =   Ret   -   1   '超过最大高度  
  Else  
  LastLine   =   Ret  
  End   If  
  Text1.Height   =   LastLine   *   LineHeight   '修改高度  
  End   If  
  End   Sub  
   
  Private   Sub   Text1_GotFocus()  
  LastLine   =   SendMessage(Text1.hWnd,   EM_GETLINECOUNT,   0,   0&)  
  End   Sub  
  Top

相关问题

  • datagrid中使用textbox触发事件。。。
  • textbox
  • 请问斑竹,怎样使用Textbox中的DataBinding属性?
  • 关于在sql语句中使用textbox数据的问题
  • 怎么textBox控件不可以使用 \n,\r等语句??????
  • 怎样使用TextBox的数据绑定功能?
  • 怎样使用TextBox的数据绑定功能?
  • 请问ASP.NET中如何使用TextBox,值总是无法更改
  • 使用ADO控件绑定TextBox的问题
  • 如何让用户在 TEXTBOX 里使用 insert键

关键词

  • 函数
  • 移动
  • me
  • api
  • sendmessage
  • byval
  • lastline
  • sendmessagea
  • textbox
  • wmsg

得分解答快速导航

  • 帖主:Focus_zhao
  • Firing_Sky
  • jmj
  • panda
  • benbenlittle
  • littletao
  • Un1
  • peacock

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo