代碼:
方法一:窗體的代碼-->可以直接通過預設的Click事件來實現控制進度條。
1 public partial class Form1 : Form
2 {
3
4 public Form1()
5 {
6 InitializeComponent();
7 toolStripProgressBar_save.Minimum = 0;
8 toolStripProgressBar_save.Maximum = 100;
9 toolStripProgressBar_save.Step = 5;
10 }
11
12 #region 不涉及數據傳輸
13 private void button_10_Click(object sender, EventArgs e)
14 {
15 //清空進度表
16 toolStripProgressBar_save.Value = 0;
17
18 if(toolStripProgressBar_save.Value<10)
19 {
20 for (int i=0;i<2;i++)
21 {
22 toolStripProgressBar_save.PerformStep();
23 toolStripLabel_save.Text = toolStripProgressBar_save.Value.ToString() + "%";
24 }
25 }
26 }
27
28 private void button_30_Click(object sender, EventArgs e)
29 {
30 if (toolStripProgressBar_save.Value < 30)
31 {
32 for(int i=0;i<4;i++)
33 {
34 toolStripProgressBar_save.PerformStep();
35 }
36 }
37 toolStripLabel_save.Text = "30%";
38 }
39
40 private void button_50_Click(object sender, EventArgs e)
41 {
42 if (toolStripProgressBar_save.Value < 50)
43 {
44 for (int i = 0; i < 4; i++)
45 {
46 toolStripProgressBar_save.PerformStep();
47 }
48 }
49 toolStripLabel_save.Text = "50%";
50 }
51
52 private void button_60_Click(object sender, EventArgs e)
53 {
54 if (toolStripProgressBar_save.Value < 60)
55 {
56 for (int i = 0; i < 2; i++)
57 {
58 toolStripProgressBar_save.PerformStep();
59 }
60 }
61 toolStripLabel_save.Text = "60%";
62 }
63
64 private void button_80_Click(object sender, EventArgs e)
65 {
66 if (toolStripProgressBar_save.Value < 80)
67 {
68 for (int i = 0; i < 4; i++)
69 {
70 toolStripProgressBar_save.PerformStep();
71 }
72 }
73 toolStripLabel_save.Text = "80%";
74 }
75
76 private void button_100_Click(object sender, EventArgs e)
77 {
78 if (toolStripProgressBar_save.Value < 100)
79 {
80 for (int i = 0; i < 4; i++)
81 {
82 toolStripProgressBar_save.PerformStep();
83 }
84 }
85 toolStripLabel_save.Text = "Complete!";
86 }
87 #endregion
88
89
90 private void button_save_Click(object sender, EventArgs e)
91 {
92 Save.Singleton().SaveAll();
93 }
94 }
方法二:通過調用其他類裡的方法來實現對進度條的控制。
注意一:需要using System.Windows.Forms;
注意二:進度條ToolStripProgressBar的權限需要改成Public
1 public class Save
2 {
3 private static Save _instance = null;
4
5 private Form1 n = null;
6
7 public void SaveAll()
8 {
9 getWnd();
10
11 n.toolStripProgressBar_save.Minimum = 0;
12 n.toolStripProgressBar_save.Maximum = 100;
13 //清空進度表
14 n.toolStripProgressBar_save.Value = 0;
15 n.toolStripProgressBar_save.Step = 5;
16
17 #region 保存過程-與單獨按鈕是一樣的
18 if (n.toolStripProgressBar_save.Value < 10)
19 {
20
21 for (int i = 0; i < 2; i++)
22 {
23 n.toolStripProgressBar_save.PerformStep();
24 n.toolStripLabel_save.Text = n.toolStripProgressBar_save.Value.ToString() + "%";
25 }
26 }
27
28 Thread.Sleep(1000);
29
30 if (n.toolStripProgressBar_save.Value < 30)
31 {
32 for (int i = 0; i < 4; i++)
33 {
34 n.toolStripProgressBar_save.PerformStep();
35 n.toolStripLabel_save.Text = n.toolStripProgressBar_save.Value.ToString()+"%";
36 }
37 }
38
39
40 Thread.Sleep(100);
41
42 if (n.toolStripProgressBar_save.Value < 50)
43 {
44 for (int i = 0; i < 4; i++)
45 {
46 n.toolStripProgressBar_save.PerformStep();
47 n.toolStripLabel_save.Text = n.toolStripProgressBar_save.Value.ToString() + "%";
48 }
49 }
50 Thread.Sleep(100);
51
52 if (n.toolStripProgressBar_save.Value < 60)
53 {
54 for (int i = 0; i < 2; i++)
55 {
56 n.toolStripProgressBar_save.PerformStep();
57 n.toolStripLabel_save.Text = n.toolStripProgressBar_save.Value.ToString() + "%";
58 }
59 }
60 Thread.Sleep(100);
61
62 if (n.toolStripProgressBar_save.Value < 80)
63 {
64 for (int i = 0; i < 4; i++)
65 {
66 n.toolStripProgressBar_save.PerformStep();
67 n.toolStripLabel_save.Text = n.toolStripProgressBar_save.Value.ToString() + "%";
68 }
69 }
70 Thread.Sleep(100);
71
72 if (n.toolStripProgressBar_save.Value < 100)
73 {
74 for (int i = 0; i < 4; i++)
75 {
76 n.toolStripProgressBar_save.PerformStep();
77 n.toolStripLabel_save.Text = n.toolStripProgressBar_save.Value.ToString() + "%";
78 }
79 }
80 n.toolStripLabel_save.Text = "Complete!";
81 Thread.Sleep(100);
82 #endregion
83
84 }
85
86 //查找當前打開的窗體,必須有這個才能傳遞數據
87 private void getWnd()
88 {
89 foreach(Form fm in Application.OpenForms)
90 {
91 if (fm.Name == "Form1")
92 {
93 n = (Form1)fm;
94 break;
95 }
96 }
97 }
98
99 public static Save Singleton()
100 {
101 if (_instance == null)
102 {
103 _instance = new Save();
104 }
105 return _instance;
106 }
107 }
效果圖:(左邊為方法一的效果、右邊為方法二的效果圖)
