现在我通过30%~100%的按钮可以直接显示进度,即:按30%按钮,进度条就会到30%。这儿是通过当前窗体的Click事件直接设置。
但是我想另外实现的是通过在保存按钮的Click事件中调用其他Class里的SaveAll()事件来保存。
public partial class Form1 : Form { public Form1() { InitializeComponent(); toolStripProgressBar_save.Minimum = 0; toolStripProgressBar_save.Maximum = 100; toolStripProgressBar_save.Step = 5; } #region 不涉及数据传输 private void button_30_Click(object sender, EventArgs e) { if (toolStripProgressBar_save.Value < 30) { for(int i=0;i<6;i++) { toolStripProgressBar_save.PerformStep(); } } toolStripLabel_save.Text = "30%"; } private void button_60_Click(object sender, EventArgs e) { if (toolStripProgressBar_save.Value < 60) { for (int i = 0; i < 6; i++) { toolStripProgressBar_save.PerformStep(); } } toolStripLabel_save.Text = "60%"; } private void button_100_Click(object sender, EventArgs e) { if (toolStripProgressBar_save.Value < 100) { for (int i = 0; i < 8; i++) { toolStripProgressBar_save.PerformStep(); } } toolStripLabel_save.Text = "Complete!"; } #endregion private void button_save_Click(object sender, EventArgs e) { Save.Singleton().SaveAll(); }
我想调用Save类里的SaveAll事件来显示进度条:失败了,感觉就是这个事件和toolStripProgressBar_save没有关联上,这个地方不知道怎么办......
public class Save { private static Save _instance = null; Form1 n = new Form1(); public void SaveAll() { n.toolStripProgressBar_save.Minimum = 0; n.toolStripProgressBar_save.Maximum = 100; n.toolStripProgressBar_save.Value = 0; n.toolStripProgressBar_save.Step = 5; #region 保存过程-与单独按钮是一样的 if (n.toolStripProgressBar_save.Value < 30) { for (int i = 0; i < 6; i++) { n.toolStripProgressBar_save.PerformStep(); } } n.toolStripLabel_save.Text = "30%"; Thread.Sleep(100); if (n.toolStripProgressBar_save.Value < 60) { for (int i = 0; i < 6; i++) { n.toolStripProgressBar_save.PerformStep(); } } n.toolStripLabel_save.Text = "60%"; Thread.Sleep(100); if (n.toolStripProgressBar_save.Value < 100) { for (int i = 0; i < 8; i++) { n.toolStripProgressBar_save.PerformStep(); } } n.toolStripLabel_save.Text = "100%"; Thread.Sleep(100); #endregion } public static Save Singleton() { if (_instance == null) { _instance = new Save(); } return _instance; } }
有调用这个单例么?
我也不清楚,所以来问问,调试的时候是没有问题,但是就是显示不出来进度.....
@可达鸭要进化:
二次元懵逼
每个方法需要被调用才执行。你上面的执行是通过按钮触发调用执行
下面的saveall方法没有调用是不会自动执行的
@hahanonym: saveall方法放在了保存按钮的click事件里了,是可以执行的。但是按了保存按钮,界面上的进度条是没有变化的。但是我调试的时候发现这个saveall是可以执行的。
所以现在的问题就是按了保存按钮,界面上的无变化,感觉没有关联上。
@可达鸭要进化: 你在一个form上点击执行,又new一个form去执行进度条变化,肯定没关联咯
要么把form对象传到save里面去,要么new出的新form show出来就能看到了
查找当前打开的窗口,找到了当前的窗口就可以了!