C# WinForm进度条实现:首先是进度条窗体,需要在上面添加进度条,然后去掉ControlBox。除此外,还要增加一个方法,用来控制进度条的增加幅 度,具体如下:

代码
   1/// ﹤summary﹥  
   2/// Increase process bar  
   3/// ﹤/summary﹥  //C# WinForm进度条实现
   4/// ﹤param name="nValue"﹥the value increased﹤/param﹥  
   5/// ﹤returns﹥﹤/returns﹥  
   6public bool Increase( int nValue )  
   
7. {  
   
8if( nValue ﹥ 0 )  
   
9. {  
  
10if( prcBar.Value + nValue ﹤ prcBar.Maximum )  
  
11. {  
  
12. prcBar.Value += nValue;  
  
13return true;  
  
14. }  
  
15else 
  
16. {  
  
17. prcBar.Value = prcBar.Maximum;  
  
18this.Close();  
  
19return false;  
  
20. }  
  
21. }  
  
22return false;  
  
23. } 

C# WinForm进度条实现之主窗体:

如何进行操作了,首先需要定义两个私有成员,一个委托。其中一个私有成员是保存当前进度条窗体对象,另一个是保存委托方法(即增加进度条尺度),具 体如下:


   1private frmProcessBar myProcessBar = null;  
   
2private delegate bool IncreaseHandle( int nValue );  
   
3private IncreaseHandle myIncrease = null

C# WinForm进度条实现之在主窗体中提供函数来打开进度条窗体,如下:

 

代码
   1/// ﹤summary﹥  
   2/// Open process bar window  
   3/// ﹤/summary﹥  
   4private void ShowProcessBar()  
   
5. {  
   
6. myProcessBar = new frmProcessBar();  
   
7.  
   
8// Init increase event  
   9. myIncrease = 
  
10new IncreaseHandle( myProcessBar.Increase );  
  
11. myProcessBar.ShowDialog();  
  
12. myProcessBar = null;  
  
13. } 

C# WinForm进度条实现之开始创建线程来运行,具体如下:

代码
   1/// ﹤summary﹥  
   2/// Sub thread function  
   3/// ﹤/summary﹥  
   4private void ThreadFun()  
   
5. {  
   
6. MethodInvoker mi =   
   
7new MethodInvoker( ShowProcessBar );  
   
8this.BeginInvoke( mi );  
   
9.  
  
10. Thread.Sleep( 1000 );  
  
11//Sleep a while to show window  
  12.  
  
13bool blnIncreased = false;  
  
14object objReturn = null;  
  
15do 
  
16. {  
  
17. Thread.Sleep( 50 );  
  
18. objReturn = this.Invoke(  
  
19.  this.myIncrease,  
  
20new object[]{ 2 } );  
  
21. blnIncreased = (bool)objReturn ;  
  
22. }  
  
23while( blnIncreased );  
  
24. }  

注意以上,在打开进度条窗体和增加进度条进度的时候,一个用的是BeginInvoke,一个是Invoke,这里的区别是BeginInvoke 不需要等待方法运行完毕,而Invoke是要等待方法运行完毕。还有一点,此处用返回值来判断进度条是否到头了,如果需要有其他的控制,可以类似前面的方 法来进行扩展。

C# WinForm进度条实现之启动线程,可以如下:


   1. Thread thdSub = new Thread(   
   
2new ThreadStart( ThreadFun ) );  
   
3. thdSub.Start(); 

这样,一个用模式打开进度条窗体就做完了。

C# WinForm进度条实现的基本情况就向你介绍到这里,希望对你学习和了解C# WinForm进度条实现有所帮助。


 

 

posted on 2010-02-03 01:41  superlee  阅读(4879)  评论(1编辑  收藏  举报