日期:2014-05-18 浏览次数:21464 次
namespace ProcessBar
{
    public partial class Form1 : Form
    {
        private delegate void ShowProcessBarFrm(int max, int value);
        private frmProcessBar myProgbar;
        public Form1()
        {
            InitializeComponent();
            myProgbar = new frmProcessBar();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Thread thread = new Thread(new ThreadStart(UpdateProgressBar));
            thread.Start();
            if (myProgbar != null)
            {
                lock (myProgbar.ProgressBar)
                {
                    myProgbar.ShowDialog();
                }
            }
        }
        private void UpdateProgressBar()
        {
            ShowProcessBarFrm p = new ShowProcessBarFrm(myProgbar.SetProgess);
            int initialValue = 100;
            for (int count = 0; count < initialValue; count = count + 2)
            {
                //myProgbar.SetProgess(initialValue, count);
                p.Invoke(initialValue, count);
            }
        }
    }
}
public void SetProgess(int max, int value)
        {
            if (value <= max)
            {
                if (InvokeRequired)
                {
                    progressBar1.Maximum = max;
                    progressBar1.Value = value;
                    if (value == max)
                    {
                        progressBar1.Visible = false;
                    }
                    else
                    {
                        progressBar1.Visible = true;
                    }
                }
            }
        }