有以下一个问题,从1到n枚举,举例如下:当textbox1输入5时,即n=5,则textbox2输出结果并分行显示
本人很菜,我的代码如下
dim k as integer
for k = 1 to textbox1.text
textbox2.text= textbox2 & i & vbcrlf
不过发现上述代码在textbox2中输出结果时,当n>1000左右时,就明显感觉textbox2输出结果的时间很慢,并且容易程序假死,
请问各位大侠,有没有其他方法比上述代码稳定而且更快的吗?谢谢!

解决方案 »

  1.   

    引用我的原贴
    "有以下一个问题,从1到n枚举,举例如下:当textbox1输入5时,即n=5,则textbox2输出结果并分行显示
    本人很菜,我的代码如下
    dim   k   as   integer
    for   k   =   1   to   textbox1.text
    textbox2.text=   textbox2   &   i   &   vbcrlf
    不过发现上述代码在textbox2中输出结果时,当n> 1000左右时,就明显感觉textbox2输出结果的时间很慢,并且容易程序假死,
    请问各位大侠,有没有其他方法比上述代码稳定而且更快的吗?谢谢!"更改如下:
    当textbox1输入5时,即n=5,则textbox2输出结果为
    1
    2
    3
    4
    5
    当textbox1输入10时,即n=10,则textbox2输出结果为
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    以此类推本人很菜,我的代码如下
    dim   k   as   integer
    for   k   =   1   to   textbox1.text
    textbox2.text=   textbox2   &   i   &   vbcrlf
    不过发现上述代码在textbox2中输出结果时,当n> 1000左右时,就明显感觉textbox2输出结果的时间很慢,并且容易程序假死,
    请问各位大侠,有没有其他方法比上述代码稳定而且更快的吗?谢谢!
      

  2.   

    在你的for循环 中加上DoEvents就好了
      

  3.   

    还有一点把dim   k   as   integer 
    改为dim   k   as   long ,因为数字比较大的话会出错,integer 型越界了。
      

  4.   

    的确解决了假死的问题,不过代码产生数列的速度还是很慢,当n>1000时,谢谢
      

  5.   

    记得以前网上看过,属性比变量慢很多,如果不要求每个数字的输出都显示的话,可以定义一个字符串,然后
    j=val(text1.text)
    for k = 1 to j'数大的话,取text比取变量慢多
    strA=strA & i & vbcrlf 最后text1.text=strA
      

  6.   

    拼接字符串当然慢
    给你个思路,用数组,然后join给text2赋值
    代码简单,不写了
      

  7.   

    感谢各位大侠,7楼的最快,integer的确容易出错
      

  8.   

    dim   k   as   integer 
    for   k   =   1   to   textbox1.text 
    textbox2.text=   textbox2   &   i   &   vbcrlf改成:
    dim   k   as   integer 
    dim S as string
    for   k   =   1   to   val(textbox1.text )
    S=   S   &   i   &   vbcrlf
    ...
    next
    text2.text=s
    就可以了。
    你前面的代码有几个明显的不当之处:
    k   =   1   to   textbox1.text 
    这算什么写法?TEXTBOX1.TEXT明显是个字符串变量,或许VB会帮你自动转换一下类型,但你就能保证别人再TEXT1里面输入的时候就一定是个数字?textbox2   &   i
    这也有问题,虽然VB控件有默认属性,它会在不指定控件属性的时候按照默认属性来处理,但是这显然是非常不严谨的。最后,也就是你的程序出问题的原因,是在于循环累加的速度很快的,TEXTBOX的显示刷新是无法更上这个速度的,并且即使可以跟上也没有一点意义,因为你也不可能看清楚,所以你的写法只是徒然得增加了程序的负担。因此我这里帮你改进一下,使用个字符串变量来存放中间结果,只在最后把结果显示再TEXT2里面就可以了。速度会提高很多。