描述VB ConsoleProgressBar類
VB還是比較常用的,于是我研究了一下VB ConsoleProgressBar類,在這里拿出來和大家分享一下,希望對(duì)大家有用。
移動(dòng)控制臺(tái)中的一個(gè)區(qū)域
MoveBufferArea方法允許我指定控制臺(tái)窗口內(nèi)的一個(gè)區(qū)域(或緩沖區(qū)),然后指定一組坐標(biāo)來移動(dòng)它。我想把文件名列表顯示到一個(gè)滾動(dòng)列表中,而同時(shí)還能維持頭部信息及控制臺(tái)窗口頂部的進(jìn)度欄。一旦我把一個(gè)文件名打印到控制臺(tái)中的最后一行,我就停止更新rowIndex變量并開始使用 MoveBufferArea方法。
MoveBufferArea使用了六個(gè)參數(shù):
◆第一個(gè)參數(shù)指定你想選擇區(qū)域的左邊緣。
◆第二個(gè)參數(shù)指定你的緩沖區(qū)區(qū)域的最上邊一行。
◆第三和第四個(gè)參數(shù)指定你的緩沖區(qū)區(qū)域的寬度和高度。
◆最后兩個(gè)參數(shù)指定你想把你的緩沖區(qū)移往的區(qū)域的左邊緣和最上邊一行。
- Console.MoveBufferArea(0, _BufferSourceTopLine, _Console.WindowWidth,
_Console.WindowHeight - BufferSourceTopLine, _0, _BufferDestinationTopLine)
這段代碼告訴MoveBufferArea方法從第0列和第BufferSourceTopLine(一個(gè)常量,值為8)行開始。然后,它把緩沖區(qū)區(qū)域?qū)挾仍O(shè)置為等于控制臺(tái)窗口的寬度并且把緩沖區(qū)區(qū)域高度設(shè)置為等于控制臺(tái)窗口高度和文件名列表的最上面一行(BufferSourceTopLine)之差。最后兩個(gè)參數(shù)指定我的緩沖區(qū)區(qū)域的目標(biāo)位置為第0列和第BufferDestinationTopLine(定義為常數(shù)7)行。
用更簡(jiǎn)單的描述來說就是,該代碼通過最后一個(gè)名字選擇在列表中的第二個(gè)文件名并且把該緩沖區(qū)往上移動(dòng)一行,有效地刪除了最上面的文件名并且為底部的下一個(gè)文件名留出了空間。
VB ConsoleProgressBar類
我創(chuàng)建了VB ConsoleProgressBar類來處理初始化和更新進(jìn)度條的細(xì)節(jié)問題。其構(gòu)造器使用了一個(gè)參數(shù)—MaximumValue:
- Public Sub New(ByVal MaximumValue As Long)
- m_length = Console.WindowWidth - 10
- m_left = 7
- m_right = m_left + m_length + 1
- m_progressBarRow = 1
- m_messageBarRow = m_progressBarRow + 1
- m_percentPosition = 4
- m_maximumValue = MaximumValue
- m_currentValue = 0
- Initialize()
- End Sub
我硬編碼了一些值,并且基于這些硬編碼值計(jì)算其它值。在本文中,我構(gòu)造的這個(gè)類很小,但是你可以擴(kuò)展這個(gè)構(gòu)造器以便再加入其它參數(shù)—使得進(jìn)度條更具配置性。
在初始化所有的成員變量以后,我調(diào)用Initialize方法,它又調(diào)用InitializePercentComplete, InitializeProgressBar和InitializeMessageBar方法。這些方法的任務(wù)并不多;它們僅打印一個(gè)百分號(hào),一組表示進(jìn)度條結(jié)束的方括號(hào),以及該進(jìn)度條的最大值和最小值。
【編輯推薦】