CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

急:怎样把文本框的内容按显示情形一行行放到一个数组里面?

楼主kissoflife(明月高楼休独倚,酒入愁肠,化作相思泪!)2003-12-02 13:43:53 在 VB / 基础类 提问

文本框的Multiline属性为True,但没有水平和垂直滚动条。请问怎样把它的内容按实际显示情形一行行放到一个数组里面?  
  谢谢! 问题点数:20、回复次数:8Top

1 楼aiur2000(破愿立志别故里,荆棘南下思北风)回复于 2003-12-02 16:58:32 得分 2

Dim   b()   As   String  
   
  Private   Sub   Command1_Click()  
  ReDim   b(10)  
  a   =   Text1.Text  
  b   =   Split(a,   vbCrLf,   -1,   1)  
  For   i   =   LBound(b)   To   UBound(b)  
          MsgBox   b(i)  
  Next  
  End   SubTop

2 楼SoHo_Andy(冰)回复于 2003-12-02 17:03:29 得分 3

aiur2000(杀破狼)   的方法只能用于回车换行的,textbox自动换行是没有回车换行符的  
   
  这样行不通Top

3 楼kissoflife(明月高楼休独倚,酒入愁肠,化作相思泪!)回复于 2003-12-02 20:04:25 得分 0

多谢楼上两位。  
  我用换行符试过,分不开。  
  请继续指点!Top

4 楼Apple200228(Apple)回复于 2003-12-02 21:21:45 得分 13

用API读取TextBox的每行数据,赋值到属组中。  
  函数如下:  
  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  
  Public   Declare   Sub   RtlMoveMemory   Lib   "kernel32.dll"   (Destination   As   Any,   Source   As   Any,   ByVal   Length   As   Long)  
   
  Public   Const   HT_CAPTION   =   2  
  Public   Const   WM_NCLBUTTONDOWN   =   &HA1  
  Public   Const   EM_GETLINECOUNT   =   &HBA  
  Public   Const   EM_LINEINDEX   =   &HBB  
  Public   Const   EM_LINELENGTH   =   &HC1  
  Public   Const   EM_GETLINE   =   &HC4  
   
  Public   Function   GetPosChar(ByVal   Row   As   Long,   ByVal   txtName   As   TextBox)   As   String  
        Dim   pos   As   Long  
        Dim   Length   As   Integer  
        Dim   strChar   As   String  
        pos   =   SendMessage(txtName.hwnd,   EM_LINEINDEX,   Row,   ByVal   0&)  
        Length   =   SendMessage(txtName.hwnd,   EM_LINELENGTH,   pos,   ByVal   0&)  
        strChar   =   ""  
        If   Length   >   0   Then  
                  strChar   =   String(Length,   Chr(0))  
                  RtlMoveMemory   ByVal   strChar,   Length,   2  
                  SendMessage   txtName.hwnd,   EM_GETLINE,   Row,   ByVal   strChar  
        End   If  
        GetPosChar   =   strChar  
  End   FunctionTop

5 楼MrRedSnow(慕容红雪)回复于 2003-12-02 21:30:34 得分 2

楼主用的textbox估计是multiline=true的,所以实际上换行的位置根本就没有vbcrlf。Top

6 楼kissoflife(明月高楼休独倚,酒入愁肠,化作相思泪!)回复于 2003-12-02 21:34:50 得分 0

非常感谢   Apple200228(Apple),你这代码确实好用。  
  但还有一个问题,那就是怎么知道文本框有多少行呢?如何判断已经是最后一行了呢?  
  Top

7 楼kissoflife(明月高楼休独倚,酒入愁肠,化作相思泪!)回复于 2003-12-02 22:20:25 得分 0

呵呵,已经知道了:  
  intCount   =   SendMessage(txtName.hwnd,   EM_GETLINECOUNT,   0,   0)Top

8 楼czjt0602(jack)回复于 2003-12-03 00:05:35 得分 0

知道了就散分嘛!!!!Top

相关问题

  • 文本框数组
  • 请问如何将文本框中的内容放到数组中?
  • 数组文本框问题
  • 把数据表中的多个字段内容放到窗体的相应文本框中,是用单个控件好呀?还是用控件数组好呀?
  • 如何削除一行文本框
  • 1.asp中的文本框数组提交给2.asp的问题
  • 如何将多行文本框的内容存入一个数组
  • 请问在vb中怎样用文本框给一维数组赋值?(急!!!!)
  • 怎样得到多行文本框中文本的每一行
  • 为什么在Edit文本框里只显示一行??

关键词

  • 文本框
  • strchar
  • txtname
  • 一行
  • em
  • byval
  • sendmessage
  • hwnd
  • pos
  • textbox

得分解答快速导航

  • 帖主:kissoflife
  • aiur2000
  • SoHo_Andy
  • Apple200228
  • MrRedSnow

相关链接

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

广告也精彩

反馈

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