【正文】
、屬性等 ? XmlReader類中的 Read方法是一個(gè)基本的讀 XML文檔的方法,它以流模式讀取 XML文檔中的節(jié)點(diǎn)每次調(diào)用此方法,都會(huì)移到下一個(gè)節(jié)點(diǎn)上去。 【 例 】 打開(kāi)存在 D盤(pán)根目錄下的 XML文件 。 設(shè)計(jì)步驟如下: ( 1)新建一個(gè)名 ReadXmlDemo的控制臺(tái)應(yīng)用程序 ( 2)添加代碼: Imports Module Module1 Sub Main() ?定義一個(gè) XmlTextReader類的對(duì)象并調(diào)用 read方法來(lái)讀取文件 Dim textReader AS New XmlTextReader(“D:\\”) While(()) () ?讀取元素 ()?當(dāng)前節(jié)點(diǎn)名稱 () ?當(dāng)前節(jié)點(diǎn)的基 URI () ?當(dāng)前節(jié)點(diǎn)的本地名稱 (())?當(dāng)前節(jié)點(diǎn)的屬性個(gè)數(shù) (())?當(dāng)前節(jié)點(diǎn)的深度 (())?當(dāng)前行號(hào) (())?當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)類型 (())?當(dāng)前節(jié)點(diǎn)的文本值 End While End Sub End Module XmlTextWriter創(chuàng)建 XML文件 ? 通過(guò)添加單個(gè)的開(kāi)始和結(jié)束元素標(biāo)識(shí)符來(lái)建立 XML文件 ? XmlTextWriter的常見(jiàn)屬性是 Formatting,用來(lái)確定得到的 XML被格式化了 方法名 說(shuō)明 Close 關(guān)閉寫(xiě)入的文件。文件用完以后應(yīng)該及時(shí)關(guān)閉。 WriteElementString 在新文件中創(chuàng)建新元素。新元素包括了開(kāi)始和結(jié)束標(biāo)識(shí)符以及元素中的文本。創(chuàng)建沒(méi)有任何子節(jié)點(diǎn)的單個(gè)元素時(shí)應(yīng)該使用的方法。 WriteStartElement 在文件中創(chuàng)建新元素。該方法只創(chuàng)建元素的開(kāi)始標(biāo)識(shí)符。創(chuàng)建含有子節(jié)點(diǎn)的元素時(shí)應(yīng)該使用的方法 WriteEndElement 為當(dāng)前元素寫(xiě)結(jié)束標(biāo)識(shí)符 【 例 】 創(chuàng)建一個(gè)存儲(chǔ)在 D盤(pán)根目錄下的 XML文件 ( 1)新建一個(gè)名 WriteXmlDemo的控制臺(tái)應(yīng)用程序 ( 2)具體代碼為: Imports Module Module1 Sub Main() Dim Writer AS New XmlTextWriter(“C:\\”,Nothing) =?使用自動(dòng)縮進(jìn)便于閱讀 (“Team”) ?書(shū)寫(xiě)根元素 (“player”) ?開(kāi)始一個(gè)元素 (“Name”, “Gee”) ?向先前創(chuàng)建的元素中添加一個(gè)屬性 (Nickname, Zippy) ?添加子元素 (Position, QB) ()?關(guān)閉 item元素 ()?關(guān)閉根元素 ()?將 XML寫(xiě)入文件并關(guān)閉 Writer End Sub End Module 打印技術(shù) ? 打印文檔涉及到 2個(gè)方面的操作:一方面利用PrintDialog控件、 PrintPerviewDialog控件和PageSetupDialog控件為用戶提供圖形界面打印文檔,另一方面,利用 PrintDocument控件來(lái)打印文檔,此時(shí)首先要?jiǎng)?chuàng)建一個(gè)PrintDocument類。打印文檔類似于將文本信息顯示在指定的圖形中,因此通過(guò)調(diào)用方法上。 PrintDocument 類 ? PrintDocument類提供了若干用于打印文檔和圖形的實(shí)用對(duì)象,包括 PrinterSettings對(duì)象(包含打印機(jī)的默認(rèn)設(shè)置)、PageSettings對(duì)象(包含特定頁(yè)的打印設(shè)置)和PrintPageEventArgs對(duì)象(包含將要打印頁(yè)的事件信息)。在使用 PrintDocument類的時(shí)候需要在窗體代碼的頂部添加Imports 語(yǔ)句: Imports ?將 PrintDocument類添加到頁(yè)面中 ? 在打印文檔時(shí),通??梢詣?chuàng)建 PrintDocument 類的一個(gè)新實(shí)例,使用 PageSettings和 PrinterSettinsg設(shè)置描述打印內(nèi)容和方式的屬性,然后調(diào)用 Print 方法開(kāi)始打印進(jìn)程。通過(guò)使用 PrintPageEventArgs 中包含的 Graphics 來(lái)處理用于指定打印輸出的 PrintPage 事件。 PrintDocument 類 在使用 PrintDocument控件時(shí),有兩種情況需要處理: 對(duì)于一些簡(jiǎn)單的文檔(如單個(gè)文本文件 )進(jìn)行打印時(shí),應(yīng)將 PrintDocument 組件添加到 Windows 窗體,然后在 PrintPage 事件處理程序中添加打印文件的編程邏輯。該編程邏輯應(yīng)以使用 Print 方法打印文檔結(jié)束。此方法向打印機(jī)發(fā)送一個(gè) Graphics 對(duì)象,該對(duì)象包含在 PrintPageEventArgs 類的 Graphics 屬性中。 用戶如想要重新使用已編寫(xiě)的打印邏輯的情況。在這種情況下,應(yīng)從 PrintDocument 組件派生一個(gè)新組件,并重寫(xiě) PrintPage 事件。 范例 【 例 】 用順序訪問(wèn)方式將文本文件讀取到多行文本框中,并利用打印控件將其打印出來(lái)。運(yùn)行界面參見(jiàn)圖 。程序設(shè)計(jì)步驟如下: 1. 在窗體上添加 1個(gè)多行文本框控件、 3個(gè)按鈕控件、 1個(gè)PrintDocument控件、 1個(gè) PrintDialog控件和一個(gè)PageSetUpDialog控件。控件屬性設(shè)置如表 。 控件類型 屬性 屬性值 控件 屬性 屬性值 Form Text 打印文檔 Button Name BtnOpen PrintDocument Name PrintDocument1 Text 打開(kāi)文件 PrintDialog Name PrintDialog1 Button Name BtnPrint PageSetupDialog Name PageSetupDialog1 Text 打印文件 Button Name BtnSetup RichTextBox ScrollBars ForcedBoth Text 頁(yè)面設(shè)置 Name RBoxShow 2. 為程序添加代碼: ( 1) 定義變量 Imports Imports Public Class form1 Dim FileName, str, mystr, showstr As String Dim PageSettings As New PageSettings Dim result As DialogResult Dim PrintFont As New Font(Arial, 10) ( 2) 為 “ 打開(kāi) ” 按鈕添加事件代碼 Private Sub BtnOpen_Click(… ) Handles FileOpen(1, d:\, ) ?打開(kāi)文本文件 Input(1, str) ?讀取文本文件 = str ?在文本框顯示文件 End Sub ( 3) 為 “ 頁(yè)面設(shè)置 ” 按鈕添加事件代碼 Private Sub BtnSetup_Click(… ) Handles = PageSettings ?指定頁(yè)面設(shè)置對(duì)話框 () ?調(diào)用頁(yè)面設(shè)置對(duì)話框 End Sub ( 4) 為 “ 打印 ” 按鈕添加事件代碼 Private Sub BtnPrint_Click(… ) Handles showstr = () ?調(diào)用打印方法 End Sub ( 5)為“ PrintPage”添加事件代碼 Private Sub PrintDocument1_PrintPage(…) Handles Dim chars, lines As Integer Dim page As String Dim PageFormat As New StringFormat Dim draw As New RectangleF(, , , ) 39。聲明圖形對(duì)象 Dim size As New SizeF(, ) 39。定義打印區(qū)域 = 39。處理字符串 (mystr, PrintFont, size, PageFormat, chars, lines) page = (0, chars) 39。計(jì)算出使用于頁(yè)面的字符串 (page, PrintFont, , draw, PageFormat) 39。在當(dāng)前頁(yè)打印文檔 If chars Then mystr = (chars) 39。刪除已經(jīng)打完的字符串 = True Else = False str = End If End Sub End Class 第 8章 Windows桌面程序開(kāi)發(fā)實(shí)例 學(xué)習(xí)目標(biāo) ? 通過(guò)實(shí)例掌握 Windows桌面程序的開(kāi)發(fā)流程; ? 掌握各種控件在處理實(shí)際問(wèn)題中的應(yīng)用; ? 通過(guò)實(shí)例掌握面向?qū)ο蟪绦蚓帉?xiě)思想與方法。 通訊錄程序 題目要求 設(shè)計(jì)一個(gè)通訊錄,運(yùn)行界面參照?qǐng)D 。該通訊錄應(yīng)該具有以下功能: ? 通訊錄中條記錄包括的字段有:姓名、性別、出生日期、工作單位聯(lián)系電話、手機(jī)、電子郵箱、通訊地址和郵政編碼 ? 用戶可以添加、修改、刪除、瀏覽記錄,并可以按照姓名進(jìn)行查找。 ? 每次對(duì)通訊錄的修改以文本文件的形式保存,以保證數(shù)據(jù)的長(zhǎng)期存儲(chǔ)。 控件類型 屬性 屬性值 控件類型 屬性 屬性值 ListBox Name ListBox1 Button Text “修改 (amp。M)” TextBox Name TxtName Name btnModify TextBox Name TxtCompany Button Text “確定修改” TextBox Name TxtTel Name btnModOk TextBox Name TxtMobile Button Text “上一個(gè)(amp。P)” TextBox Name TxtEmail Name btnPre TextBox Name TxtAddress Button Text “下一個(gè) (amp。N)” TextBox Name TxtCode Name btnNext RadioButton Name RadMale Button Text “刪除 (amp。D)” Text “男” Name btnDel RadioButton2 Name RadFemale Button Text “查找 (amp。F)” Text “女” Name btnFind Button Text 添加 (amp。A) Button Text “保存 (amp。S)” Name btnAdd Name btSave Button Text “確定添加” DataTimerPicker Name Cbirthday Name btnAddOk Form Name Form1 Text “通訊錄” 程序分析與代碼 1. 定義全局變量 在程序的開(kāi)始處變量值 , 采用結(jié)構(gòu)體數(shù)組存儲(chǔ)每條記錄信息 , 具體代碼為: Public _customers(1000) As Custom 39。定義集合保存記錄 Public intcount As Integer 39。查詢變量保存索引 Public i As Integer Serializable() Public Structure Custom 39。構(gòu)建結(jié)構(gòu) Public name,sex, birthday,pany, tel, movebal, , address, code As String End Structure 程序分析與代碼 /解鎖控件 Private Sub LockText() ?鎖定 = = = = True = = =False = = = =True End Sub Private Sub UnLockText() 39。解鎖 = = = =False = = = True = =