《Visual Basic NET程序設(shè)計》課件第5章_第1頁
《Visual Basic NET程序設(shè)計》課件第5章_第2頁
《Visual Basic NET程序設(shè)計》課件第5章_第3頁
《Visual Basic NET程序設(shè)計》課件第5章_第4頁
《Visual Basic NET程序設(shè)計》課件第5章_第5頁
已閱讀5頁,還剩147頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第5章文件與資源管理

5.1資源管理技術(shù)5.2文件訪問技術(shù)5.3對話框控件習(xí)題實驗五記事本

5.1資源管理技術(shù)

【案例5-1】

類似Windows資源管理器功能的窗體(1)。瀏覽計算機邏輯盤及邏輯盤上的資源(各邏輯盤及邏輯盤上的文件夾及其文件)。

用TreeView和ListView兩個主要控件及ImageList1控件、StatusBar控件和RichTextBox控件可實現(xiàn)類似Windows資源管理器窗體。在TreeView控件中顯示計算機中的邏輯盤,當單擊某個邏輯盤時,顯示此邏輯盤中的文件夾,此時選擇某個文件夾,在ListView控件中顯示此文件夾中的文件名稱等。另外,當鼠標位于左右窗格分界處Splitter控件上時,可以調(diào)整左右窗格的大小。效果圖如圖5-1所示。圖5-1案例5-1設(shè)計界面

【技能目標】

能利用前面學(xué)習(xí)過的控件(ImageList1控件、StatusBar控件和RichTextBox控件)及TreeView控件和ListView控件設(shè)計出類似Windows資源管理器功能的窗體,以瀏覽計算機邏輯盤及邏輯盤上的資源(各邏輯盤及邏輯盤上的文件夾及文件夾下的文件)。

【操作要點與步驟】

(1)建立一個新的Windows應(yīng)用程序,命名為VBnet5-1。啟動VB.NET,新建一個“Windows應(yīng)用程序”項目,項目名為VBnet5-1,該項目存放在“D:\VB.net”目錄下。

(2)窗體設(shè)計。輸入項目名及該項目存放目錄后,在所出現(xiàn)的窗體上放置ImageList1控件、TreeView控件、StatusBar控件、ListView控件、Splitter控件和RichTextBox控件。

(3)設(shè)置窗體及各控件屬性。按表5-1設(shè)置窗體及各控件的屬性,窗體設(shè)計和各控件屬性設(shè)置后的效果圖如圖5-2所示。

●設(shè)置ImageList1控件Images的Collection集合屬性。圖5-2窗體設(shè)計及各控件屬性設(shè)置后的效果圖圖5-3添加ImageList1控件Images的Collection集合屬性

①?ImageList1控件Images的Collection集合屬性所需要的圖片文件在VB.NET的安裝文件夾中或在因特網(wǎng)上可以找到。

②注意添加圖片文件的順序。第1、2、3、4幅圖片所對應(yīng)的文件名分別是MYCMP.ICO、DRIVDSE.ICO、CLSDFOLD.ICO和OPENFOLD.ICO,對應(yīng)的圖片索引號分別為0、1、2、3。

●設(shè)置TreeView1控件Nodes的Collection集合屬性(只添加根節(jié)點,子節(jié)點由程序?qū)崿F(xiàn))。

在圖5-4中單擊“添加根”按鈕,在“標簽”下的文本框中輸入“我的電腦”;在“圖像”的下拉列表框中選擇第1幅圖片;在“選定的圖像”的下拉列表框中選擇第1幅圖片后按確定按鈕。圖5-4TreeView1控件Nodes的Collection集合屬性●設(shè)置StatusBar控件Panels屬性的Collection集合屬性(SBPFile屬性)。

在圖5-5中右半邊已經(jīng)顯示SBPFile成員屬性,SBPFont和SBPCount成員屬性分別如圖5-6和圖5-7所示。這三個成員屬性是通過單擊圖5-5中的“添加”按鈕添加的。

●設(shè)置StatusBar控件Panels屬性的Collection集合屬性(SBPFont屬性)。

●設(shè)置StatusBar控件Panels屬性的Collection集合屬性(SBPCount屬性)。圖5-5StatusBar控件Panels屬性的Collection集合屬性(SBPFile屬性)圖5-6StatusBar控件Panels屬性的Collection集合屬性(SBPFont屬性)圖5-7StatusBar控件Panels屬性的Collection集合屬性(SBPCount屬性)●設(shè)置ListView控件Columns屬性的Collection集合屬性(FileName屬性)。

在圖5-8中,右半邊顯示FileName屬性。LastAccess屬性如圖5-9所示。這兩個屬性是通過單擊圖5-8中的“添加”按鈕添加的。

●設(shè)置ListView控件Columns屬性的Collection集合屬性(LastAccess屬性)。圖5-8ListView控件Columns屬性的Collection集合屬性(FileName屬性)圖5-9ListView控件Columns屬性的Collection集合屬性(LastAccess屬性)

(4)完成了界面及各控件的屬性設(shè)計后,還需要編寫代碼才能實現(xiàn)所需要的功能。因為該案例要瀏覽計算機邏輯盤及邏輯盤上的資源(各邏輯盤上的文件夾及文件夾下的文件),所以首先在程序代碼的最開頭使用語句ImportsSystem.IO,以引用System.IO命名空間;同時為了能完成本章中所有案例的功能,在整個程序模塊中應(yīng)定義一些公共變量。引用命名空間及定義公共變量的代碼如下:

(5)為了能夠瀏覽邏輯盤和文件夾,在TreeView1_AfterSelect事件中根據(jù)用戶所選擇節(jié)點的類型決定調(diào)用不同的自定義函數(shù)。如果用戶選擇的是根節(jié)點,則調(diào)用自定義函數(shù)DispDriver();如果用戶選擇的是子節(jié)點,則調(diào)用DispDir()自定義函數(shù)。為了在用戶選擇子節(jié)點時能夠在ListView控件中顯示此子節(jié)點(文件夾)下的文件,在TreeView1控件中列舉完此子節(jié)點(文件夾)下的文件夾后,再調(diào)用DispFile()自定義函數(shù),ListView控件中的列表即顯示此子節(jié)點(文件夾)下的文件。

調(diào)用自定義函數(shù)的程序及三個自定義函數(shù)DispDriver()、DispDir()、DispFile()的程序代碼如下:

(6)項目的保存與運行。代碼輸入完成后,先將項目保存,然后按F5鍵或單擊工具欄上的運行按鈕運行該項目。項目運行后,在左窗格中會將計算機中的邏輯盤符顯示出來,選擇邏輯盤的某個文件夾,此文件夾下的文件將會在右窗格中顯示,效果圖如圖5-1所示。

【相關(guān)知識】

知識點5-1-1

TreeView控件

TreeView控件又稱為樹型視圖控件,工具箱中的圖標為。TreeView控件類似于在Windows資源管理器左窗格中以文件夾和文件的方式顯示節(jié)點的層次結(jié)構(gòu)。每個節(jié)點都可能包含稱為子節(jié)點的其他節(jié)點。父節(jié)點或包含子節(jié)點的節(jié)點可以以展開或折疊的方式顯示。

1.TreeView控件的主要屬性

1)?Nodes屬性

Nodes屬性是TreeView控件最重要的屬性,它是一個集合屬性,Nodes集合包含分配給TreeView控件的所有TreeNode對象。此集合中的樹節(jié)點稱做根樹節(jié)點。隨后添加到根樹節(jié)點上的任何樹節(jié)點稱做子節(jié)點。

可以在圖5-4所示的“樹節(jié)點編輯器”中向TreeView控件添加根節(jié)點和子節(jié)點,每個節(jié)點的名稱都可以通過“標簽”設(shè)置,各節(jié)點折疊時的圖像可以在“圖像”下拉列表框中設(shè)置,各節(jié)點展開時的圖像可以在“選定的圖像”下拉列表框中設(shè)置。Nodes屬性可以通過在圖5-4中添加節(jié)點并設(shè)置各節(jié)點的屬性來設(shè)置,也可以用編程的方式來設(shè)置。例如,案例5-1就是用編程方式來設(shè)置的。Nodes集合屬性如圖5-10所示。Nodes集合屬性的功能說明如表5-2所示。圖5-10Nodes集合屬性

Nodes屬性是集合屬性,即當前節(jié)點的子節(jié)點Nodes屬性如表5-2所示。

2)?SelectedNode屬性

SelectedNode屬性用來設(shè)置或返回當前被選中的節(jié)點,它也是一個集合屬性,它的集合屬性的子屬性和方法與Nodes集合屬性的子屬性和方法基本相同。

3)?ImageList屬性(必須使TreeView控件與ImageList控件相關(guān)聯(lián))

TreeView控件可在每個節(jié)點旁顯示圖標,圖標緊挨著節(jié)點文本的左側(cè)。若要顯示這些圖標,則必須使TreeView控件與ImageList控件相關(guān)聯(lián)。關(guān)聯(lián)的方法為:既可以用手工方式在設(shè)計器中使用“屬性”窗口設(shè)置,也可以用編程的方式實現(xiàn)。采用編程的方式可將TreeView控件的ImageList屬性設(shè)置為希望使用的ImageList控件,其代碼如下:

TreeView1.ImageList=ImageList1

(1)?ImageIndex屬性。只有設(shè)置TreeView控件的ImageList屬性與ImageList控件相關(guān)聯(lián)后,才能設(shè)置ImageIndex屬性。

ImageIndex屬性可為TreeView控件中的節(jié)點設(shè)置默認圖像,還可為正常和展開狀態(tài)下的節(jié)點顯示圖像。節(jié)點旁邊顯示圖像由ImageIndex屬性值從TreeView控件的ImageList屬性中名為ImageList的控件來獲取。

(2)?SelectedImageIndex屬性。SelectedImageIndex屬性可為選定狀態(tài)下的節(jié)點顯示圖像。選定狀態(tài)下節(jié)點旁邊顯示的圖像由SelectedImageIndex屬性值從TreeView控件的ImageList屬性中名為ImageList的控件來獲取。

ImageIndex屬性和SelectedImageIndex屬性可在代碼中設(shè)置,也可在“樹節(jié)點編輯器”中設(shè)置,如圖5-4所示。

4)?CheckBoxes屬性

TreeView控件的CheckBoxes屬性的功能可以決定是否在節(jié)點旁顯示復(fù)選框。當該屬性設(shè)置為True,在顯示樹視圖時,節(jié)點旁邊帶有復(fù)選框,此時,用戶可以通過單擊鼠標選中或取消節(jié)點旁的復(fù)選框來決定節(jié)點是顯示或清除。當然用戶也可以通過編程的方式在程序中將節(jié)點的Checked屬性設(shè)置為True或False來決定節(jié)點是顯示還是清除。

5)?Indent屬性

Indent屬性用來設(shè)置父節(jié)點與子節(jié)點之間的水平縮進距離。

6)?LabelEdit屬性

LabelEdit屬性用來設(shè)置是否可以編輯節(jié)點的標簽文本。

7)?PathSeparator屬性

PathSeparator屬性用來獲取或設(shè)置節(jié)點路徑所使用的分隔符串,缺省的分隔符為“\”。

8)?Scrollable屬性

Scrollable屬性用來獲取或設(shè)置當TreeView控件中的節(jié)點超出邊界時是否添加滾動條,缺省值為True。

9)?Sorted屬性

Sorted屬性用來獲取或設(shè)置是否將TreeView控件中的節(jié)點按字母順序排序。

10)?VisibleCount屬性

VisibleCount屬性用于返回TreeView控件中完全可見的樹節(jié)點的數(shù)目,該屬性是一個只讀屬性。

11)?HotTracking屬性

HotTracking屬性用于返回或設(shè)置當鼠標指針移過樹節(jié)點標簽時,樹節(jié)點標簽是否具有超級鏈接的外觀。

12)?ShowLines屬性

ShowLines屬性用于返回或設(shè)置是否顯示TreeView控件的父子節(jié)點之間的關(guān)系線,缺省值為True。

13)?ShowPlusMinus屬性

ShowPlusMinus屬性用于返回或設(shè)置是否在包含有子節(jié)點的父節(jié)點前顯示加號(+)和減號(-)按鈕,缺省值為True。加號(+)表示該項目沒有展開,單擊加號(+)可以展開項目,此時顯示減號(-),單擊減號(-)將折疊該項目,減號(-)又變成加號(+)。

14)?ShowRootLines屬性

ShowRootLines屬性用于返回或設(shè)置是否顯示TreeView控件根節(jié)點之間的連線,缺省值為True。

ShowLines屬性、ShowPlusMinus屬性和ShowRootLines屬性最好保留它們的缺省屬性值,因為這三個屬性值都為True時,父節(jié)點和子節(jié)點的樹狀結(jié)構(gòu)關(guān)系才會顯示得清晰明了。

2.TreeView控件的常用事件

1)?BeforeSelect事件和AfterSelect事件

這兩個事件在選中節(jié)點“前”、“后”觸發(fā)。AfterSelect事件是在設(shè)計器上雙擊TreeView控件默認打開的事件,也是最常用的事件,例如,案例5-1使用了TreeView控件的AfterSelect事件。

2)?BeforeCollapse事件和AfterCollapse事件

這兩個事件在節(jié)點折疊“前”、“后”觸發(fā)。當子節(jié)點展開時,單擊父節(jié)點使子節(jié)點收斂“前”、“后”分別觸發(fā)BeforeCollapse事件和AfterCollapse事件。

3)?BeforeExpand事件和AfterExpand事件

這兩個事件與BeforeCollapse事件和AfterCollapse事件剛好相反,BeforeExpand事件和AfterExpand事件分別在節(jié)點展開“前”、“后”觸發(fā)。

4)?AfterLabelEdit事件和BeforeLabelEdit事件

這兩個事件在編輯節(jié)點的標簽文本“前”、“后”觸發(fā)。

5)?BeforeSelect事件和AfterSelect事件

這兩個事件在選定節(jié)點“前”、“后”觸發(fā)。

6)?BeforeCheck事件和AfterCheck事件

當TreeView控件的CheckBoxes屬性設(shè)置為True時,這兩個事件在選中節(jié)點前的復(fù)選框“前”、“后”觸發(fā)。

3.TreeView控件的常用方法

1)?CollapseAll方法

CollapseAll方法可以將所有TreeView控件中展開的節(jié)點折疊起來。

調(diào)用的格式為

TreeView1.CollapseAll()

2)?ExpandAll方法

ExpandAll方法可以將所有TreeView控件中折疊的節(jié)點都展開。

調(diào)用的格式為

TreeView1.ExpandAll()

3)?GetNodeAt方法

GetNodeAt方法可以檢索位于指定位置的節(jié)點。

調(diào)用的格式為

TreeView1.GetNodeAt(xAsinteger,yAsinteger)

4)?GetNodeCount方法

GetNodeCount方法可以返回TreeView控件的節(jié)點數(shù),返回TreeView控件的節(jié)點數(shù)根據(jù)調(diào)用此方法時傳遞的邏輯參數(shù)值的不同而不同。如果調(diào)用此方法時傳遞的邏輯參數(shù)值為True,則返回的節(jié)點數(shù)是包括子節(jié)點的;如果調(diào)用此方法時傳遞的邏輯參數(shù)值為False,則返回的節(jié)點數(shù)是不包括子節(jié)點的。

調(diào)用的格式為

TreeView1.GetNodeCount(IncludeSubtreesAsBollean)知識點5-1-2

ListView控件

ListView控件又稱為列表視圖控件,工具箱中的圖標為。ListView控件可以把所需列出的項目很清楚地羅列出來,如列出邏輯盤上某文件夾下的文件、數(shù)據(jù)庫中的表名或表中某些字段的記錄值等。

1.ListView控件的主要屬性

1)?View屬性

列表有“大圖標”、“詳細資料”、“小圖標”和“列表”四種方式。用戶要選擇四種方式的一種來顯示列表項,可以通過對ListView控件的View屬性進行設(shè)置。ListView控件的View屬性設(shè)置方法如圖5-11所示。

LargeIcon是大圖標顯示方式(默認值),Details是詳細列表顯示方式,SmallIcon是小圖標顯示方式,List是列表顯示方式。圖5-11ListView控件的View屬性設(shè)置方法

2)?LargeImageList屬性

LargeImageList屬性用來設(shè)置ListView控件的列表項的圖標。實際上其值可以用來指定某個ImageList控件。當ListView控件的列表項以大圖標顯示時,設(shè)置此屬性。

3)?SmallImageList屬性

SmallImageList屬性用來設(shè)置ListView控件的列表項的圖標。實際上其值可以用來指定某個ImageList控件。當ListView控件的列表項以小圖標顯示時,設(shè)置此屬性。

4)?StateImageList屬性

StateImageList屬性用來設(shè)置ListView控件的列表項的圖標。實際上其值可以用來指定某個ImageList控件。當ListView控件的列表項以除大圖標和小圖標外的形式顯示時,設(shè)置此屬性。

5)?LabelEdit屬性

LabelEdit屬性用于返回或設(shè)置是否允許對列表項目標題進行編輯。

6)?MultiSelect屬性

MultiSelect屬性用來設(shè)置是否可以進行多項選擇,默認值為True。

7)?GridLines屬性

GridLines屬性用來設(shè)置是否將列表項顯示為表格形式,默認值為False。

8)?HeaderStyle屬性

HeaderStyle屬性用來設(shè)置表頭風(fēng)格,默認值為Clickable,表示可以響應(yīng)鼠標單擊并可按該列表內(nèi)容對項目排序;None表示不顯示表頭;NoneClickable表示不響應(yīng)鼠標單擊。

9)?Sorted屬性

Sorted屬性用來設(shè)置ListView控件的列表項的排序方式,默認值為None,表示不設(shè)置排序;Ascending表示按開頭字母升序排列;Descending則表示按開頭字母降序排列。

10)?FocusedItem屬性

FocusedItem屬性用于返回當前獲取焦點的列表項。

11)?Columns集合屬性

Columns集合屬性用來設(shè)置ListView控件的列表頭,只有當ListView控件的View屬性設(shè)置為Details時才會顯示ListView控件的列表頭。用戶可以單擊屬性窗口中Columns屬性右邊的按鈕,通過圖5-9所示的“ColumnHeader集合編輯器”向ListView控件中添加列表頭。

Columns集合屬性主要用于設(shè)置列表項的屬性。列表頭項的常用屬性如表5-3所示。

表5-3列表頭項的常用屬性

12)?Items集合屬性

Items集合屬性用來設(shè)置ListView控件的列表項信息,用戶可以單擊屬性窗口中Items屬性右邊的按鈕,通過操作圖5-12所示的“ListViewItem集合編輯器”向ListView控件中添加列表項。

在圖5-12所示的“ListViewItem集合編輯器”中有成員屬性SubItems。當單擊該屬性右邊的按鈕時,會出現(xiàn)圖5-13所示的“ListViewSubItem集合編輯器”,可以向ListView控件中添加次列表項SubItem。圖5-12ListViewItem集合編輯器

在出現(xiàn)圖5-12所示的“ListViewSubItem集合編輯器”時,左邊索引號為0的項是自動產(chǎn)生的,這項為該SubItem的主項。

用戶也可以在程序代碼中利用Items集合屬性的Add和Clear方法向Items集合里動態(tài)添加和刪除列表項。圖5-13ListViewSubItem集合編輯器

2.ListView控件的常用事件

ListView控件的常用事件如表5-4所示。

3.ListView控件的常用方法

1)?Clear方法

Clear方法為從ListView控件中移除所有項和列。

2)?GetItemAt方法

GetItemAt方法可以檢索位于指定位置的項。

調(diào)用的格式為

ListView.GetNodeAt(xAsinteger,yAsinteger)

知識點5-1-3

System.IO命名空間

System.IO命名空間包含與I/O相關(guān)的類,它提供了基于對象的工具。System.IO命名空間提供以下功能:

●創(chuàng)建、刪除和操作文件夾及文件。●對文件夾及文件進行監(jiān)視。

●從流中讀/寫數(shù)據(jù)或字符(包括多字節(jié)字符,并可以直接讀/寫各種數(shù)據(jù)類型)。

●隨機訪問文件。

●使用多種枚舉常量設(shè)置文件夾和文件的操作等。

在使用與I/O操作有關(guān)的類時,必須引用System.IO命名空間。引用System.IO命名空間的方法是在程序代碼的最開頭加上如下語句:

ImportsSystem.IO知識點5-1-4Directory類

Directory類的典型操作是復(fù)制、移動、重命名、創(chuàng)建和刪除文件夾,也可將Directory類用于獲取和設(shè)置與文件夾的創(chuàng)建、訪問及寫入操作相關(guān)的DateTime信息。表5-5列出了Directory類的常用方法。

5.2文件訪問技術(shù)

【案例5-2】

類似Windows資源管理器功能的窗體(2)。對顯示在ListView控件內(nèi)的文件進行復(fù)制、粘貼、刪除等操作。

該案例可以對顯示在ListView控件內(nèi)的文件進行復(fù)制、粘貼、刪除等操作。當首次在ListView控件的空白處右擊鼠標時,彈出的菜單都是灰色的;在某個文件上右擊鼠標時,彈出的菜單只顯示復(fù)制文件和刪除文件菜單;如果單擊顯示復(fù)制文件菜單后,再右擊鼠標,則會出現(xiàn)粘貼文件菜單。該案例還可以實現(xiàn):在ListView控件中顯示的文件上雙擊文本文件,則會在RichTextBox1控件中顯示該文本文件的內(nèi)容;如果雙擊的文件不是文本文件,則會在RichTextBox1控件中顯示該文件的擴展名類型信息。效果圖如圖5-14所示。圖5-14案例5-2的效果圖

【技能目標】

學(xué)會利用文件流對文件進行讀/寫操作。

【操作要點與步驟】

(1)將案例5-1所在的文件夾VBnet5-1復(fù)制到文件夾VBnet5-2,打開VBnet5-2文件夾下的VBnet5-1.sln文件。

(2)單擊“解決方案資源管理器”窗口中的“解決方案‘VBet5-1’(1項目)”,將名稱由原來的VBnet5-1改為VBnet5-2。

(3)單擊“解決方案資源管理器”窗口中的“VBnet5-1”項目,將屬性窗口中的“項目文件”屬性改為VBnet5-2.vbproj。

(4)彈出式菜單設(shè)計。將工具箱中的彈出式菜單控件拖放到窗體內(nèi),由于彈出式菜單控件在項目運行時不可見,因此該控件自動被放在窗體的下方顯示。拖放好上下文菜單控件后按表5-6設(shè)置彈出式菜單中各菜單項的屬性。

(5)將ListView1控件的ContextMenu屬性設(shè)置為ContextMenu1。

(6)編寫代碼。因為該案例要求根據(jù)是否在ListView1控件的空白處右擊鼠標來決定上下文菜單的可操作項,所以編寫事件代碼如下:

(7)為上下文菜單編寫的各菜單項的Click事件代碼如下:

(8)為了實現(xiàn)在ListView1控件中雙擊文本文件名時能在RichTextBox1控件內(nèi)顯示文本文件的內(nèi)容(如果雙擊的不是文本文件,則顯示該文件的擴展名信息),編寫程序代碼如下:

(9)項目的保存與運行。代碼輸入完成,先保存項目,然后按F5鍵或單擊工具欄上的運行按鈕運行該項目。項目運行后會出現(xiàn)如圖5-14所示的效果圖。

【相關(guān)知識】

知識點5-2-1

File類

文件是存儲在媒體介質(zhì)上的數(shù)據(jù)集合。文件類可以實現(xiàn)創(chuàng)建文件、復(fù)制文件、刪除文件、移動文件等任務(wù)。File類知識點5-2-1System.IO命名空間包含F(xiàn)ile和Directory類,它們可以提供操縱文件和文件夾所需的基本功能。File類的常用方法如表5-7所示。

知識點5-2-2文件類型

VB.NET與VB一樣,也有三種文件類型,這三種文件類型分別是:順序文件、隨機文件和二進制文件。

1.順序文件

順序文件也稱為文本字符流式文件,它是普通的純文本文件,通常用于存儲字符、數(shù)字或其他可用的ASCII字符表示的數(shù)據(jù),但不能存儲像位圖這樣的信息。該文件中的每一個字符都是由一個文本字符或文件格式字符(回車、換行等)組成的。

2.隨機文件

隨機文件允許以記錄的方式存儲和訪問信息,這種方法的隨機文件由一組相同長度的記錄組成,記錄可以由標準數(shù)據(jù)類型的單一字段組成,或者由多個字段組成(如班級的課程由多門課程所組成)。每個字段的數(shù)據(jù)類型和長度可以不同,但文件中每條記錄的長度是相同的。隨機訪問類型允許訪問隨機文件的任何記錄。

3.二進制文件

二進制文件適用于訪問具有任意結(jié)構(gòu)的文件,因此它也是一種最通用的訪問類型。它實際上以字節(jié)為單位對文件進行訪問,不管什么文件都可以認為是由字節(jié)構(gòu)成的。因為在訪問二進制文件類型時可以將文件指針移到任何位置,所以它對于變長字段尤為適用。知識點5-2-3StreamReader類和StreamWriter類

1.流的概念

在VB.NET中引入了一種新的數(shù)據(jù)格式——流,這種格式也可以通過System.IO命名空間下的類來訪問。流使用Stream類表示,所有表示流的類都是從這個類中繼承的。流向用戶提供了一個一般的數(shù)據(jù)視圖,隱藏了操作系統(tǒng)和底層設(shè)備的實現(xiàn)細節(jié),所有的流都支持讀/寫操作。打開文件時將返回對應(yīng)的流對象,用戶便可以對流對象進行讀/寫操作。

2.StreamReader類和StreamWriter類

System.IO提供了通過使用特定編碼從流或文件中讀取字符和將字符寫入流或文件中的類。System.IO包括StreamReader類和StreamWriter類,這一對類可以直接從文件中讀取字符順序流或?qū)⒆址樞蛄鲗懭氲轿募?,它們是以文本方式讀取和寫入信息的。

StreamReader類可以從流或文件中讀取字符;在創(chuàng)建StreamReader類的對象時,可以指定一個流對象,也可以指定一個文件路徑,創(chuàng)建對象之后就可以調(diào)用它的方法,從流中讀取數(shù)據(jù)。StreamReader類提供了以下從流中讀取數(shù)據(jù)的常用方法,如表5-8所示。

StreamWriter類可以將字符寫入流或文件。StreamWriter類提供了以下常用的方法將字符寫入流或文件中,如表5-9所示。

StreamReader類和StreamWriter類的默認編碼均為UTF-8,而不是當前系統(tǒng)的ANSI編碼。UTF-8可以正確處理Unicode字符,因此如果用StreamReader類和StreamWriter類讀/寫的文件流不是默認編碼為UTF-8的文本文件,則應(yīng)該將該文本文件另存為編碼為UTF-8的文本文件,另存為的界面如圖5-15所示。圖5-15另存為編碼為UTF-8的文本文件

StreamReader類和StreamWriter類都有Close方法,Close方法都可以關(guān)閉該對象,并釋放相關(guān)聯(lián)的系統(tǒng)資源。

5.3對?話?框?控?件

【案例5-3】

類似Windows資源管理器功能的窗體(3)。利用對話框控件實現(xiàn)文件的打開等操作。

該案例通過操作加載在窗體上的下拉式菜單實現(xiàn)用對話框?qū)⑽募蜷_,將打開的文件在RichTextBox1控件內(nèi)顯示,然后對顯示在RichTextBox1控件內(nèi)的文字內(nèi)容用字體對話框和顏色對話框?qū)ζ溥M行字體和顏色的設(shè)置等。所有的操作狀態(tài)均在狀態(tài)欄上顯示。效果圖如圖5-16~圖5-20所示。圖5-16案例5-3的效果圖(使用對話框控件)通過單擊圖5-16中文件菜單中的“打開”、“保存”及格式菜單下的“顏色”、“字體”菜單項分別會顯示如圖5-17~圖5-20所示的對話框。圖5-17“打開”對話框圖5-18“另存為”對話框圖5-19“顏色”對話框圖5-20“字體”對話框

【技能目標】

(1)復(fù)習(xí)下拉式菜單。

(2)會使用對話框控件生成各種常規(guī)對話框。

【操作要點與步驟】

(1)將案例5-2所在的文件夾VBnet5-2復(fù)制到文件夾VBnet5-3,并打開VBnet5-3文件夾下的VBnet5-2.sln文件。

(2)單擊“解決方案資源管理器”窗口中的“解決方案‘VBnet5-2’(1項目)”,將名稱由原來的VBnet5-2改為VBnet5-3。

(3)單擊“解決方案資源管理器”窗口中的“VBnet5-2”項目,將屬性窗口中的“項目文件”屬性改為“VBnet5-3.vbproj”。

(4)下拉式菜單設(shè)計。將工具箱中的下拉式菜單控件拖放到窗體內(nèi),由于下拉式菜單控件在項目運行時不可見,因此該控件自動被放在窗體的下方顯示。拖放好下拉式菜單控件后按表5-10設(shè)置下拉式菜單中各菜單項的屬性。

(5)將窗體FrmExplorer控件的Menu屬性設(shè)置為MainMenu1。

(6)完成以上五步后,開始編寫程序代碼。為了在程序運行時能在RichTextBox1控件中顯示案例的功能及操作方法,并在狀態(tài)欄顯示初始狀態(tài),編寫了Form1_Load事件代碼。在用戶單擊關(guān)閉窗體或單擊“結(jié)束”菜單時,由于RichTextBox1_TextChanged事件中邏輯變量bModify的值為True時,會提示用戶是否保存RichTextBox1控件中的文本到文件中,因此在結(jié)束程序中編寫了Form1_Closed和MnEnd_Click兩個事件,在這兩個事件中調(diào)用了EndProgram()函數(shù)。程序的開始與結(jié)束代碼如下:

(7)完成以上六步后,開始為下拉式菜單各菜單項的Click事件編寫代碼。首先編寫文件菜單所對應(yīng)的菜單項的Click事件代碼,通過對話框的操作可以將打開的文本文件在RichTextBox1控件中顯示,并能對控件中的內(nèi)容進行字處理(打開、保存、字體、顏色等)。代碼如下:

(8)為編輯菜單所對應(yīng)的菜單項的Click事件編寫代碼。通過操作編輯菜單的各菜單項,對RichTextBox1控件中顯示的信息進行撤消、剪切、復(fù)制、粘貼、刪除和全選等操作。

(9)最后,為格式菜單所對應(yīng)的菜單項的Click事件編寫代碼,通過操作格式菜單的各菜單項,實現(xiàn)對在RichTextBox1控件中顯示的信息進行字體和顏色等的設(shè)置,為此分別編寫了兩個函數(shù)SetFont()和SetColor()。

(10)項目的保存與運行。代碼輸入完成后,先保存項目,然后按F5鍵或單擊工具欄上的運行按鈕運行該項目。項目運行后,單擊下拉式菜單的各菜單項將出現(xiàn)如圖5-17~圖5-20所示的效果圖。

【相關(guān)知識】

知識點5-3-1對話框控件概述

在VB.NET中,設(shè)計打開文件對話框,設(shè)置字體顏色對話框以及打印文件對話框是一件非常輕松的事情。使用VB.NET設(shè)計對話框基本分三步:彈出(ShowDialog方法)、判斷返回值(看ShowDialog方法的返回值是什么)以及取數(shù)據(jù)(FileName屬性或其他屬性)。所以學(xué)會了“打開文件”對話框的用法以后,學(xué)習(xí)其他對話框就非常容易了。

在VB.NET中,對話框控件有打開文件、保存文件、顏色設(shè)置、字體設(shè)置、打印、打印預(yù)覽等對話框。這些對話框控件都是不可視控件,在窗體設(shè)計器上并不直接添加到窗體上,而是放在窗體工作區(qū)的下方。知識點5-3-2文件打開對話框控件OpenFileDialog

在Windows應(yīng)用程序中,需要通過文件來操作數(shù)據(jù)。要操作文件中的數(shù)據(jù),必須先打開文件。VB.NET提供了文件打開對話框OpenFileDialog控件,程序通過調(diào)用該控件的ShowDialog方法即可顯示如圖5-17所示的“打開”文件對話框,用戶通過指定驅(qū)動器、文件夾名稱、文件名來指定文件。打開指定的文件后,用戶就可以讀/寫打開文件中的數(shù)據(jù)了。

文件打開對話框控件OpenFileDialog的屬性如表5-11所示。文件打開對話框控件OpenFileDialog的常用方法如表5-12所示。

有一個StreamReader類可用來讀取文件。在創(chuàng)建了StreamReader類以后,就可以用StreamReader類的方法對文本文件進行操作了。StreamReader類的常用方法有以下幾種。

●?Read方法:讀取輸入流中的下一個字符或下一組字符。

●?ReadToEnd方法:從流的當前位置到末尾讀取流。

●?Peek方法:返回下一個可用的字符,但不使用它。

●?ReadLine方法:從當前流中取一行字符并將數(shù)據(jù)作為字符串返回。知識點5-3-3文件保存對話框控件SaveFileDialog

在VB.NET中,要為應(yīng)用程序設(shè)置文件保存對話框,應(yīng)使用SaveFileDialog控件。該控件的使用和設(shè)置與OpenFileDialog控件的使用和設(shè)置基本相同,只是多了一些文件保存對話框控件SaveFileDialog的特有屬性。

表5-13列出了除OpenFileDialog控件的屬性外,文件保存對話框控件SaveFileDialog的特有屬性。

SaveFileDialog控件的方法與OpenFileDialog控件完全相同,可按照處理OpenFileDialog控件的方法來處理SaveFileDialog控件。例如要顯示一個SaveFileDialog控件,可使用下面的代碼:

SaveFileDialog1.ShowDialog()

圖5-18所示為一個標題為“另存為”的文件保存對話框,該對話框的默認路徑為“D:\”,默認文件名為“未命名”,默認文件擴展名為“*.txt”。

有一個StreamWriter類可用來寫文件。在創(chuàng)建了StreamWriter類以后,就可以用StreamWriter類的方法對文本文件進行操作了。StreamWriter類的常用方法有以下幾種:

●?Write方法:寫入?yún)?shù)指定的字符串、數(shù)字、字符數(shù)組等。

●?Close方法:關(guān)閉當前的StreamWriter類的對象。

●?WriteLine方法:換行寫入?yún)?shù)指定的字符串、數(shù)字、字符數(shù)組等。如果沒有參數(shù),則只能完成換行功能。知識點5-3-4顏色設(shè)置對話框控件ColorDialog

在VB.NET中,如果要進行顏色設(shè)置,則可以使用顏色設(shè)置對話框控件ColorDialog。通過調(diào)用ColorDialog控件的ShowDialog方法,可以顯示“顏色”對話框,如圖5-19所示。這是一個標準的Windows顏色設(shè)置對話框,它支持幾百萬種顏色,但用戶能夠直接使用的顏色只有幾十個,其他的顏色需要用戶單擊“規(guī)定自定義顏色”按鈕,打開對話框的自定義部分來定義。

相對于其他的對話框控件,ColorDialog控件的屬性比較少,這是因為標準的“顏色”對話框不需要進行過多的設(shè)置。表5-14列出了顏色設(shè)置對話框控件ColorDialog的常用屬性及說明。

ColorDialog控件只有兩種方法:一種是Reset方法,用于還原對話框的默認設(shè)置;另一種是ShowDialog方法,用于顯示“顏色”對話框。

知識點5-3-5字體對話框控件FontDialog

在VB.NET應(yīng)用程序中,字體設(shè)置是通過FontDialog控件調(diào)用一個名稱為“字體”的字體設(shè)置對話框來實現(xiàn)的。字體設(shè)置是大部分應(yīng)用程序,特別是具有文本編輯能力的應(yīng)用程序的必備功能。通過調(diào)用字體對話框控件FontDialog1的ShowDialog方法可以顯示“字體”對話框,如圖5-20所示。利用“字體”對話框,用戶可以完成所有關(guān)于字體的設(shè)置。

字體對話框控件FontDialog的常用屬性及說明如表5-15所示。

FontDialog控件的常用方法有ShowDialog和Reset兩種,它們的使用同其他幾個對話框控件相同。

知識點5-3-6打印對話框控件PrintDialog和打印預(yù)覽對話框控件PrintPreviewDialog

前面介紹了案例5-3中所用到的打開文件、保存文件、顏色設(shè)置以及字體設(shè)置對話框,在實際應(yīng)用系統(tǒng)中,除了經(jīng)常使用前面介紹的幾種通用對話框外,還經(jīng)常使用VB.NET提供的“打印”和“打印預(yù)覽”兩個對話框。另外,還需要PrintDocument控件來真正執(zhí)行打印任務(wù)。

在窗體的下方創(chuàng)建PrintDialog控件之后,調(diào)用該控件的ShowDialog方法即可顯示“打印”對話框,如圖5-21所示。圖5-21“打印”對話框在“打印”對話框中,用戶可以在打印之前設(shè)置打印的份數(shù),選擇已安裝的打印機類型,設(shè)置打印范圍等打印選項,操作方法和其他對話框一樣。PrintDialog控件除了具有和其他對話框相同的屬性外,該控件還有自己的特有屬性,如表5-16所示。

如果用戶要在打印之前預(yù)覽自己的文檔,那么可在應(yīng)用程序中添加一個PrintPreviewDialog控件,然后調(diào)用該控件的ShowDialog方法顯示“打印預(yù)覽”對話框來預(yù)覽打印文檔。對于PrintPreviewDialog控件來說,最重要的屬性就是Document屬性,Document屬性用來設(shè)置接收打印設(shè)備的打印文檔,該屬性的值由PrintDocument控件提供。實際上,文檔的打印和打印預(yù)覽都必須由PrintDocument控件和類來支持,它可以提供打印文檔并發(fā)送打印命令到打印機,也就是說,從文檔到打印機的打印任務(wù)是由PrintDocument類來完成的。在創(chuàng)建PrintDialog和PrintPreviewDialog控件之前,應(yīng)利用工具箱創(chuàng)建一個PrintDocument控件,然后設(shè)置其DocumentName屬性值為要打印文檔的名稱和路徑。

PrintDocument類也有一個PrinterSettings屬性,用來接收或設(shè)置文檔的打印機對象,一般從PrintDialog控件的PrinterSettings中獲得。PrintDocument類通過Print方法將文檔發(fā)送到指定的打印機進行打印。在文檔打印時,會為文檔的每一頁觸發(fā)PrintPage事件,這要求用戶為PrintPage事件創(chuàng)建一個過程并添加一個事件處理器。新建的過程可以根據(jù)StreamReader類的屬性來讀取文檔內(nèi)容并發(fā)送到打印機。知識點5-3-7標準的消息和輸入對話框

在VB.NET中,還提供了MsgBox函數(shù)、MessageBox類和InputBox函數(shù),用于生成標準的消息和輸入對話框。VB.NET中標準的消息和輸入對話框的功能與VB中標準的消息和輸入對話框功能相似。習(xí)題

一、單項選擇

1.要執(zhí)行與I/O有關(guān)的操作,必須引入_____命名空間。

A.?System.Forms

B.?System.Draw

C.?System.IO

D.?System.Math

2.一般來說,在制作Windows資源管理器時,其右側(cè)的資源項目

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論