接下来,介绍进度条在Winform界面中具体的应用和步骤。

- public FrmProcsBar(int _Minimun, int _Maximum)
- {
- InitializeComponent();
- progressBar1.Maximum = _Maximum;//设置范围最大值
- progressBar1.Value = progressBar1.Minimum = _Minimun;//设置范围最小值
- }
-
- public void setPos(int value)
- {
- if (value < progressBar1.Maximum)
- {
- progressBar1.Value = value;//设置进度值
- label1.Text = (value * 100 / progressBar1.Maximum).ToString() + "%";
- }
- Application.DoEvents();//重点,必须加上,否则父子窗体都假死
- }
-
- private void FrmProcsBar_Load(object sender, EventArgs e)
- {
- this.Owner.Enabled = false;
-
- }
-
- private void FrmProcsBar_FormClosed(object sender, FormClosedEventArgs e)
- {
- this.Owner.Enabled = true;
- }

其次在按钮的单击事件中加入代码
调用函数,使用进度条显示处理进度的内容
- //定义一个进度条对象,以及一个调用的委托
- FrmProcsBar fm;
- delegate void EventJisuan(object sender, EventArgs e);
-
- private void button1_Click(object sender, EventArgs e)
- {
- fm = new FrmProcsBar(0, 101);
- this.Invoke(new EventJisuan(Jisuan), sender, e);
-
- MessageBox.Show("运行结束");
- }
-
- private void Jisuan(object sender, EventArgs e)
- {
- fm.Show(this);
- fm.setPos(0);//设置进度条位置0%
-
- //需要加载进度的内容
-
- for (int i = 0; i < 200000000; i++)
- {
- i++;
- }
-
- fm.setPos(20);//设置进度条位置20%
-
- for (int i = 0; i < 200000000; i++)
- {
- i++;
- }
-
- fm.setPos(40);//设置进度条位置40%
-
- for (int i = 0; i < 200000000; i++)
- {
- i++;
- }
-
- fm.setPos(60);//设置进度条位置60%
-
- for (int i = 0; i < 200000000; i++)
- {
- i++;
- }
-
- fm.setPos(80);//设置进度条位置80%
-
- for (int i = 0; i < 200000000; i++)
- {
- i++;
- }
- fm.setPos(100);//设置进度条位置100%
- Thread.Sleep(300);
- fm.Close();
- }
例运行程序,点击按钮之后,开始自加计算,大概需要5秒左右
例总的来说,就是进度条需要放在一个新建的Form上,然后再这个Form里面加好内容,然后使用委托来开辟一个进度条同时运行的线程。估算好要加进度条所有内容的进度百分比,添加百分比直到结束就可以。