明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2011|回复: 0

收藏一些文章

[复制链接]
发表于 2011-12-16 15:54:49 | 显示全部楼层 |阅读模式
http://blog.sina.com.cn/s/blog_69e8fdf00100mdzz.html

)c#+AutoCAD,程序中如何设置进度条同步问题
关于AutoCAD中的进度条例子可以见:
http://blog.sina.com.cn/s/blog_69e8fdf00100lw5l.html
    在上面的例子提到:关于进度条的进度和程序进度如何保持一致,还有待研究
      通过几天的研究,初步有了解决方案如下,个人觉得还挺好的,只是貌似代码分散了点。原理如下:根据自己程序代码的进度来调整进度条的进度,就是把自己的代码分为多个阶段,大概分配下哪个阶段需要用百分之几的比例就可以了,下面用我这个程序中举个例子。如我前面的横断面标注程序。
      1.在标注前需要设置读取一下信息等等,我把这部分的时候安排了10%,而接下来就是循环标注了,然后就是结束了,所有我把后面的循环标注分配了90%的时间。

      2.时间分配好了,那就接下来在原代码中加入进度条代码,前面10%很好加,直接在设置读取信息的代码最后加入就行了,而90%的时间设置就稍微复杂一点,因为只分了90,那就只能在进度条进90范围内,所有这个时候就先要确定有多少个循环,由于程序中都是for循环,都已经通过前面的读取信息得到了循环的总次数,要保证进度条进90,那只需要把总循环次数/90.然后取整+1=i,然后在循环体内,看本次循环的次数是不是i的倍数,如果是i的倍数,就进度条进1, 这样就能保证所有循环结束时进度条进90范围内,差不多刚好程序结束时进度条也同时完成100%。

      3.方法上面讲过了,下面附上简短的代码

    using swf=System.Windows.Forms;

      ProgressMeter pm = new ProgressMeter();

      。。。。。。。。

      pm.Start("开始,请稍候...");

   pm.SetLimit(100);

    。。。。。。。。(这里为读取设置信息10%的时间,在下面运行进度条)

    for (int i = 0; i <= 10; i++)

    {

       System.Threading.Thread.Sleep(5);

       pm.MeterProgress();

       swf.Application.DoEvents();

     }

      。。。。。。。。

      int pmstart;

      pmstart = (int)plineId.Length / 90+1;

      for (int i = 0; i < plineId.Length; i++)

            {

              if (i % pmstart == 0)(循环次数为pmstart的整数倍时运行进度条进1)

                    {

                        System.Threading.Thread.Sleep(5);

                        pm.MeterProgress();

                        swf.Application.DoEvents();

                    }

      。。。。。。

              }

       for (int i = 10+plineId.Length/pmstart; i <= 100; i++)(把进度条进度到100)
                {
                    System.Threading.Thread.Sleep(5);
                    pm.MeterProgress();
                    swf.Application.DoEvents();
                }
      pm.Stop();(最后关了进度条)

        调试了下还是比较完美的,O(∩_∩)O哈哈~,终于解决这个问题。







该贴已经同步到 842986480的微博
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 09:52 , Processed in 0.242937 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表