想搞一个这样的效果Form1 上的一个按钮 点出来 Form2(带进度条的)然后它开始走进度 走完进度自动Dispose()Form1:
 private void button1_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.Show();
        }
Form2:
 private void Form2_Load(object sender, EventArgs e)
        {
            processBar.Maximum = 100;
            processBar.Minimum = 0;
            for (int i = 0; i <= 100; i++)
            {
                processBar.Value = i;
                Thread.Sleep(100);
            }
            this.Dispose();
        }
没有效果啊?
大侠不要局限在我的思路里,如果有更好的进度条方法,请大侠指教

解决方案 »

  1.   

    for (int i = 0; i <= 100; i++) 
                { 
                    processBar.Value = i; 
                    Thread.Sleep(100); 
    Application.DoEvent();
                } 
      

  2.   

    进度条最好和操作有关,也就是在操作的同时,改变进度条的值。private void button1_Click(object sender, EventArgs e)
            {
                Form2 f = new Form2();
                f.Show();
                f.BringToFront();
            } 
    private void Form2_Load(object sender, EventArgs e)
            {
                processBar.Maximum = 100;
                processBar.Minimum = 0;
    //            for (int i = 0; i <= 100; i++)
    //            {
    //                processBar.Value = i;
    //                Thread.Sleep(100);
    //            }
    //            this.Dispose();
            } 
      

  3.   

    你的代码只执行一次啊,那个bar要放在循环里,最好是单独的线程,一直运行到100,
    不然你叫那个bar怎么自己更新自己的状态呢
      

  4.   

     processBar.Value = i; 
      

  5.   

    http://hi.baidu.com/xdragon/blog/item/b845c650b745f0591138c253.html
      

  6.   

    private void Form2_Load(object sender, EventArgs e) 
            { 
                processBar.Maximum = 100; 
                processBar.Minimum = 0; 
                for (int i = 0; i <= 100; i++) 
                { 
                    processBar.Value = i; 
                    Thread.Sleep(100); 
                } 
                this.Dispose(); 
            } 这个是不行的,刚load完就dispose了~
      

  7.   

    private void Form2_Load(object sender, EventArgs e) 
            { 
                processBar.Maximum = 100; 
                processBar.Minimum = 0; 
                for (int i = 0; i <= 1000000; i=i+1000) 
                { 
                    processBar.Value = i; 
                    Thread.Sleep(100); 
                } 
                this.Dispose(); 
            } 
      

  8.   

    参考控件backgroundwork,第一个控件。
    相当于单独起个线程。界面不会出现死掉的情况。
    能满足基本需求,学起来也很easy。
      

  9.   

    我做过一个,业务计算部分是给RORM2的,当然也要单独一个线程做进度条。 计算过程汇报给进度条,完毕后,关闭返回。
      

  10.   

    这个是不行的,刚load完就dispose了~ 
     for (int i = 0; i <= 1000000; i=i+1000) 都什么啊,拉倒吧
      

  11.   

     private void Form2_Load(object sender, EventArgs e)
            {
                new Thread(new ThreadStart(KKK)).Start();
                KKK();
            }
            public delegate void DaiLi();
            public void KKK()
            {
                if (this.InvokeRequired)
                {
                    DaiLi d = new DaiLi(KKK);
                    this.Invoke(d);
                }
                else
                {
                    processBar.Maximum = 100;
                    processBar.Minimum = 0;
                    for (int i = 0; i <= 100; i++)
                    {
                        processBar.Value = i;
                        Thread.Sleep(100);
                    }
                    this.Dispose();
                }
            }
    用这个,采用异步的方式
    但是这样的效果不理想,老卡吧卡吧地(拖动窗口的时候)
      

  12.   

     KKK(); 这行去掉
    除了楼上两个大侠的链接(还一样的),哪位大侠搞过建设性,有心得的,牛叉的,进度条大侠分享下啊
      

  13.   


    给自己顶一下。backgroundwork很实用
      

  14.   

    http://www.cnblogs.com/tour-code/archive/2008/08/06/1262199.html
    LZ可以参考下
      

  15.   


    好心给你回答,你还拉到吧,就算说的不对也不能这样啊
    再说我也没说错啊,
    form_load 是干什么的,楼主这个都还没搞清楚~
      

  16.   

    在form2里加个Timer控件Timer1
    Form1: 
    private void button1_Click(object sender, EventArgs e) 
            { 
                Form2 f = new Form2(); 
                f.Show(); 
            } 
    Form2: 
    private void Form2_Load(object sender, EventArgs e) 
            { 
                timer1.Enabled=true;
            } private void Timer1_Tick(object sender,EventArgs e)
    {
       Timer1.Enabled=false;   processBar.Maximum = 100; 
                processBar.Minimum = 0; 
                for (int i = 0; i <= 100; i++) 
                { 
                    processBar.Value = i; 
                    Thread.Sleep(100); 
                } 
                this.Dispose(); 
    }
      

  17.   

    把代码放在 private void Form3_Activated(object sender, EventArgs e) 里,
            private void Form3_Activated(object sender, EventArgs e)
            {
               processBar.Maximum = 100;
                processBar.Minimum = 0;
                for (int i = 0; i <= 100; i++)
                {
                    processBar.Value = i;
                    System.Threading.Thread.Sleep(100);
                    Application.DoEvents();
                }
            }
      

  18.   

    并且要加上这行语句:Application.DoEvents();