当前位置:编程学习 > C#/ASP.NET >>

自行滚动进度条并显示进度如何实现

进度条由进度条+label组成,
进度条自行滚动,当到达100%时重新从0%开始,当程序运行完成后进度条隐藏
同时在LABEL中实时显示程序进度,如"正在执行脚本1...","正在执行脚本1..."全部完成后在LABEL上显示"所有脚本执行完成".
请问这样的进度条如何实现,请大神指教,最好有代码给参考. --------------------编程问答-------------------- 这种自定义控件JAVA写过,说简单也简单。就是两个矩形一个固定长宽在底部,用一个同样大小同样位置带指定颜色的矩形盖在上面。百分比之类的变化就是在给带颜色的矩形宽加值。 --------------------编程问答-------------------- 只看需求来说 不是很难吧?  你哪里有问题 --------------------编程问答-------------------- 你这种毫无任何有用信息的进度条,直接用个gif实现好了,没必要编程 --------------------编程问答-------------------- http://www.codeproject.com/Articles/33971/ProgressBar-with-Percentage --------------------编程问答-------------------- 进度条放图片没问题,怎么按照进度给label赋值呢?不用自定义控件那么复杂吧…没搞过多线程…最好给个代码学习下… --------------------编程问答--------------------
引用 5 楼 SL0413 的回复:
进度条放图片没问题,怎么按照进度给label赋值呢?不用自定义控件那么复杂吧…没搞过多线程…最好给个代码学习下…

看我给你的例子,中间那个。 --------------------编程问答-------------------- --------------------编程问答-------------------- 我可能没太说清楚,不是要做自定义控件,是用label和ProcessBar两件控件,我把代码放上,ProcessBar我用gif图片实现,Label怎么样根据程度执行状态更新文字(没有循环);
麻烦帮忙看一下.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace ThreadExample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //声明一个线程
        private Thread timerThread;

        public void AddData()
        {
            //显示lable的值
            this.label1.Text = "正在执行脚本1...";
            //执行脚本1代码
            //......
            //
            Thread.Sleep(500);
            //执行脚本2代码
            //......
            //
            this.label1.Text = "正在执行脚本2...";
            //执行脚本3代码
            //......
            //
            Thread.Sleep(500);
            this.label1.Text = "正在执行脚本3...";
        }
        //更新线程
        public void UpdataThread()
        {
            try
            {
                //在对控件的调用方法进行调用时,或需要一个简单委托又不想自己定义时可以使用该委托。
                MethodInvoker mi = new MethodInvoker(this.AddData);
                    //在创建控件的基础句柄所在线程上异步执行指定的委托
                    this.BeginInvoke(mi);
                    Thread.Sleep(50);
            }
            catch (ThreadInterruptedException)
            {
                //针对具体问题定制异常抛出显示
            }
            finally
            {
                //做一些处理
            }
        }

        //启动线程
        public void StartThread()
        {
            StopThread();
            timerThread = new Thread(new ThreadStart(UpdataThread));
            //获取或设置一个值,该值指示某个线程是否为后台线程。
            timerThread.IsBackground = true;
            timerThread.Start();
        }

        //停止线程
        public void StopThread()
        {
            if (timerThread != null)
            {
                //中断线程
                timerThread.Interrupt();
                timerThread = null;
            }
        }

        //启动线程,显示结果
        private void button1_Click(object sender, EventArgs e)
        {
            ShowProgressStatus();
        }

        //停止线程
        private void button2_Click(object sender, EventArgs e)
        {
            StopProgressStatus();
        }
        private void ShowProgressStatus()
        {
            //调用线程启动函数
            this.label1.Visible = true;
            this.pictureBox1.Visible = true;
            this.StartThread();
        }

        private void StopProgressStatus()
        {
            //调用线程停止函数
            this.pictureBox1.Visible = false;
            this.label1.Visible = false;
            this.StopThread();
        }
    }
}
--------------------编程问答-------------------- up
upupup --------------------编程问答-------------------- up
upupup --------------------编程问答--------------------
引用 5 楼 SL0413 的回复:
进度条放图片没问题,怎么按照进度给label赋值呢?不用自定义控件那么复杂吧…没搞过多线程…最好给个代码学习下…

不需要搞多线程,使用backgroundworker可以满足需求 --------------------编程问答--------------------
引用 11 楼 xian_wwq 的回复:
Quote: 引用 5 楼 SL0413 的回复:

进度条放图片没问题,怎么按照进度给label赋值呢?不用自定义控件那么复杂吧…没搞过多线程…最好给个代码学习下…

不需要搞多线程,使用backgroundworker可以满足需求
有例子吗? --------------------编程问答-------------------- http://www.cnblogs.com/youring2/archive/2008/11/27/1342041.html
可以参考这个。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,