程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#實現在彈出窗口中顯示進度條

C#實現在彈出窗口中顯示進度條

編輯:關於C#

在C#中要實現顯示進度條,只要通過C#子線程控制進度條即可。至於彈出一個模式窗口來 顯示進度條,則可以按照子線程的思路稍作修改。

C#進度條窗體

首先是進度條窗體,需要在上面添加進度條,然後去掉ControlBox。除此外,還要增加一 個方法,用來控制進度條的增加幅度,具體如下:

/// < summary>
/// Increase process bar
/// < /summary>
/// < param name="nValue">the value increased<  /param>
/// < returns>< /returns>

public

bool
 Increase(
int
 nValue )
{

if
( nValue > 0 )
    {

if
( prcBar.Value + nValue <  prcBar.Maximum )
        {
            prcBar.Value += nValue;

return

true
;
        }

else

        {
            prcBar.Value = prcBar.Maximum;

this
.Close();

return

false
;
        }
    }

return

false
;
}

C#進度條:主窗體

接著就是主窗體了,如何進行操作了,首先需要定義兩個私有成員,一個委托。其中一個 私有成員是保存當前進度條窗體對象,另一個是保存委托方法(即增加進度條尺度),具體 如下:

private
 frmProcessBar myProcessBar =
null
;

private

delegate

bool
 IncreaseHandle(
int
 nValue );

private
 IncreaseHandle myIncrease =
null
;

接著要在主窗體中提供函數來打開進度條窗體,如下:

/// < summary>
/// Open process bar window  
/// < /summary>

private

void
 ShowProcessBar()
{
    myProcessBar =
new
 frmProcessBar();

    // Init increase event
    myIncrease =
new
 IncreaseHandle( myProcessBar.Increase );
    myProcessBar.ShowDialog();
    myProcessBar =
null
;
}

C#進度條彈出窗口線程創建

那麼現在就可以開始創建線程來運行,具體如下:

/// < summary>
/// Sub thread function
/// < /summary>

private

void
 ThreadFun()
{
    MethodInvoker mi =
new
 MethodInvoker( ShowProcessBar );

this
.BeginInvoke( mi );

    Thread.Sleep( 1000 );//Sleep a while to show window

bool
 blnIncreased =
false
;

object
 objReturn =
null
;

do

    {
        Thread.Sleep( 50 );
        objReturn =
this
.Invoke(
this
.myIncrease,

new

object
[]{ 2 } );
        blnIncreased = (
bool
)objReturn ;
    }

while
( blnIncreased );
}

注意以上,在打開進度條窗體和增加進度條進度的時候,一個用的是BeginInvoke,一個 是Invoke,這裡的區別是BeginInvoke不需要等待方法運行完畢,而Invoke是要等待方法運行 完畢。還有一點,此處用返回值來判斷進度條是否到頭了,如果需要有其他的控制,可以類 似前面的方法來進行擴展。

啟動線程,可以如下:

Thread thdSub =
new
 Thread(
new
 ThreadStart( ThreadFun ) );
thdSub.Start();

這樣,一個用模式打開進度條窗體就做完了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved