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