| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1530 人关注过本帖
标题:如何防止text框上下滚动
只看楼主 加入收藏
xiangwentian
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2010-6-22
结帖率:0
收藏
已结贴  问题点数:20 回复次数:11 
如何防止text框上下滚动
我用一个text控件来输出socket连接返回的代码,每次定位到最后一行
    Text1.Text = Text1.Text + STR1
   Text1.SelStart = Len(Text1.Text)

我的问题是,每次socket有输出,text框都会从最上面的一行滚到最后一行,让人眼晕,text控件能不能不来回滚动啊,
还有一个问题就是,text框能不能固定行数或大小,也就是说当text1.text达到一定的行数或大小时,超过的部分自动消失(不要让text过大,占用过多内存,text只保留固定大小或行数的最新内容)
请各位高手不吝赐教
搜索更多相关主题的帖子: text 滚动 
2010-06-22 11:16
jiashie
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:237
专家分:999
注 册:2009-4-30
收藏
得分:7 
text1.SelStart = Len(text1.Text)
text1.SelText = STR1
2010-06-22 13:01
xiangwentian
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2010-6-22
收藏
得分:0 
不管用啊,
主要是每次text框添加文本,都是屏幕先翻到最上面,在滚动到最下方,如果text框文本变化快的话,屏幕闪动很厉害
2010-06-22 16:52
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4943
专家分:30067
注 册:2008-10-15
收藏
得分:7 
我现在一般是用 listbox 框来显示这种的日志

If List1.ListCount > 20 Then
    List1.RemoveItem (0)
End If
List1.AddItem 内容
List1.ListIndex = List1.ListCount - 1

如果你认为listbox 显示不会太长的行,那么再加一个 标签框,负责显示选中那行内容就是了.
Private Sub List1_Click()
Label1.Caption = List1.List(List1.ListIndex)
End Sub






授人于鱼,不如授人于渔
早已停用QQ了
2010-06-22 17:15
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:7 
以下是引用xiangwentian在2010-6-22 16:52:33的发言:

不管用啊,
主要是每次text框添加文本,都是屏幕先翻到最上面,在滚动到最下方,如果text框文本变化快的话,屏幕闪动很厉害

2#方法不管用的理由?

无知
2010-06-22 17:55
xiangwentian
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2010-6-22
收藏
得分:0 
2#的方法就是在我的脚本下面加了text1.SelText = STR1
问题是只要有text1.SelStart = Len(text1.Text),显示就会每次从上翻到下面,这样如果输入频繁,闪动就很厉害
2010-06-22 18:10
xiangwentian
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2010-6-22
收藏
得分:0 
我先试试4楼的做法
2010-06-22 18:11
jiashie
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:237
专家分:999
注 册:2009-4-30
收藏
得分:0 
以下是引用xiangwentian在2010-6-22 18:10:28的发言:

2#的方法就是在我的脚本下面加了text1.SelText = STR1
问题是只要有text1.SelStart = Len(text1.Text),显示就会每次从上翻到下面,这样如果输入频繁,闪动就很厉害


你再仔细看看,我的代码是“就是在你的脚本下面加了text1.SelText = STR1 ”么?!!
把你代码中的 Text1.Text = Text1.Text + STR1 去掉再试。
2010-06-23 09:34
jiashie
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:237
专家分:999
注 册:2009-4-30
收藏
得分:0 
再附带说一句,当你文本框中的字符数超过65535个(不知道是不是这个数字,反正是字符非常非常多时),使用text1.selStart属性就会出错。
这时就要用
SendMessage text1.hwnd, EM_SETSEL, -2, -1
来代替
text1.selStart = len(text1.text)  这一句。
2010-06-23 09:39
xiangwentian
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2010-6-22
收藏
得分:0 
我昨天试过了,我知道程序上的text1.SelText = STR1 移到了下面,还是会闪动
text1框过大(就是我上面的第二个问题,text1容量限制),我目前找不到办法,就是在超过一定限度后清空(text1.text="")
2010-06-23 11:42
快速回复:如何防止text框上下滚动
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016783 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved