我做了个程序C/S的
当mdi子窗体执行查询需要长时间等待时,父窗体的进度条控件显示进度
我试过用线程控制,但是进度条控件不显示进度,真心求教控制进度条的方法
public void StartPrcess()
        {
            COSIS_Main CM = new COSIS_Main();//父窗体
            CM.toolStripProgressBar1.Maximum = 100; //父窗体的进度条控件
            CM.toolStripProgressBar1.Value = 0;
            while (1 == 1)
            {
                if (CM.toolStripProgressBar1.Value < 10)
                {
                    CM.toolStripProgressBar1.PerformStep();
                                   }
                else
                {
                    CM.toolStripProgressBar1.Value = 0;
                                    }
            }
        }
 private void Btn_Resport_Click(object sender, EventArgs e)
        {            Thread cha = new Thread(new ThreadStart(StartPrcess));
            cha.Start();
            Load_Report();
            cha.Abort();
        }

解决方案 »

  1.   

    我晕呀...你怎么能new 一个父窗体呢。应该把父窗体的指针拿进来用就对了。
      

  2.   

    LZ, I'll give you an answer tonight.
      

  3.   


    private void button1_Click(object sender, System.EventArgs e) 
      { 
       Form2 pj=new Form2(); 
       pj.Show(); 
       //开始处理大量耗时工作 
       string sor=""; 
       int j = 10000; 
       for(int i=0;i<j;i++) 
       { 
        sor+=i.ToString(); 
        if(i%(j/100)==0) 
        { 
         pj.progressBar1.Value++; 
         pj.label1.Text="已完成:"+string.Format("{0:p}",(double)pj.progressBar1.Value/100); 
         Application.DoEvents(); 
        } 
       } 
       //工作完成,关闭进度条窗体 
       pj.Close(); 
      }
      

  4.   

    new 窗体确实不行,是需要用到指针才行。
    弹出窗体的进度条还有会有些问题的。