




已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
VB.NET程序設計,任務七 利用高級控件完善系統(tǒng),本章學習目標: 掌握TreeView、Splitter控件的使用 了解過程的遞歸調用 TreeView控件中顯示數(shù)據(jù)庫中的數(shù)據(jù) 掌握DataGridView控件的使用 掌握DataGrid控件的使用(選學),目標,每個企業(yè)或機構都有層次性,在程序中要顯示出企業(yè)或機構的組織關系,就要利用樹結構啦。 怎樣把存放在數(shù)據(jù)庫中的數(shù)據(jù)顯示成樹的結構?,問題的引入,任務: 在機構設計和編碼窗體中增加TreeView、Splitter控件??梢园裈reeView中的數(shù)據(jù)保存到數(shù)據(jù)庫,同時也能把數(shù)據(jù)庫中的數(shù)據(jù)在TreeView 上顯示出來,任務,任務: 在DataGridView控件中顯示數(shù)據(jù)庫中的數(shù)據(jù),任務,DataGridView控件,TreeView控件用于創(chuàng)建具有樹形節(jié)點的層次結構列表 該控件中每個節(jié)點還可以包含子節(jié)點 父節(jié)點能夠以展開或折疊方式顯示項目列表 樹狀列表的每個節(jié)點都是TreeNode類的實例,TreeView控件的相關知識,使用TreeView控件設計樹狀列表,TreeView 控件的常用屬性、方法和事件:,使用TreeView控件設計樹狀列表,樹狀列表的每個節(jié)點都是TreeNode類的實例,注意每個節(jié)點TreeNode還有一個Nodes屬性。 TreeNode類常用屬性、方法:,使用TreeView控件設計樹狀列表,Nodes屬性是TreeNodeCollection類的一個實例,是樹狀列表中所有節(jié)點構成的集合??梢酝ㄟ^Nodes(索引值) 來獲得索引位置的節(jié)點,第一個節(jié)點的索引為0,第二個為1,依次類推。 TreeNodeCollection類的常用方法如下:,設計窗體時在TreeView中添加節(jié)點的步驟,拖動TreeView控件到窗體中 單擊選中Nodes屬性,然后單擊省略號按鈕 ,打開“樹節(jié)點編輯器” 單擊“添加根”按鈕添加根節(jié)點 單擊“添加子項”按鈕添加當前節(jié)點的子節(jié)點 單擊“刪除”按鈕刪除當前節(jié)點,程序運行時在TreeView中加入節(jié)點的方法是:使用TreeView控件Nodes屬性的Add方法來加入根節(jié)點,使用某個節(jié)點的Nodes屬性的Add方法來加入子節(jié)點。如要建立如圖所示的數(shù)視圖的代碼:,TreeView1.Nodes.Add(“省醫(yī)藥集團”) Dim newNode As TreeNode newNode = new TreeNode(“省醫(yī)藥集團機關”) TreeView1.Nodes(0).Nodes.Add(newNode) newNode.Nodes.Add(“董事會秘書處”) newNode = new TreeNode(“省醫(yī)藥公司”) TreeView1.Nodes(0).Nodes.Add(newNode) 第1個根節(jié)點下添加子節(jié)點 newNode.Nodes.Add(“經(jīng)理辦公室”) 在省醫(yī)藥公司節(jié)點下添加子節(jié)點 TreeView1.Nodes.Remove(TreeView1.SelectedNode) 刪除選定的節(jié)點,程序運行時在TreeView中添加節(jié)點,參考代碼1,隨堂練習,1、在窗體設計中創(chuàng)建如圖的樹視圖。 2、然后再利用代碼來創(chuàng)建如圖的樹視圖,參考代碼2,Splitter控件,Splitter 控件用于在運行時調整停靠控件的大小。Splitter控件常用于窗體上控件所顯示的數(shù)據(jù)長度可變,如Windows資源管理器,它的數(shù)據(jù)窗格所包含的信息在不同的時間有不同的寬度,Splitter控件,為使用戶能夠在運行時調整??靠丶拇笮?,先將調整大小的控件??吭谌萜鞯囊粭l邊緣(Dock屬性),然后將Splitter控件??吭谠撊萜鞯耐粋?。 如圖所示樣式設置屬性如下: TreeView1.Dock = Left Splitter1.Dock = Left Panel1.Dock = Fill,Panel控件,過程的遞歸調用,Sub F1() F1() End Sub,Sub F1() F2() End Sub Sub F2() F1() End Sub,圖1,圖2,在調用一個過程中又出現(xiàn)直接或間接地調用該過程本身,稱為過程的遞歸調用。 圖1在調用F1的過程中,又要調用F1過程,這就是直接調用本過程 圖2在調用F1的過程中要調用F2,而在調用F2過程中又要調用F1,這就是間接調用過程本身,過程的遞歸調用,例如:有3個人坐在一起,問第3個人多少歲?他說比第2個人大2歲。問第2個人歲數(shù),他說比第1個人大2歲。最后問第1個人,他說10歲,請問第3人多大,上面兩種遞歸調用都是無終止的自身調用,這是不應該出現(xiàn)的。只應該出現(xiàn)次數(shù)有限的、有終止的遞歸調用。這可以用條件控制,只有某個條件成立才繼續(xù)執(zhí)行遞歸調用,否則不再繼續(xù)。,過程的遞歸調用,顯然該例子是個遞歸問題。要求第3個人的年齡,就要知道第2個人的年齡,而第2個人的年齡也不知道,他的年齡取決于第1個人的年齡。 age(3) = age(2) + 2 age(2) = age(1) + 2 age(1) = 10 其過程如下:,age(3 ) =age(2) + 2 age(3)=14 age(2) =age(1) + 2 age(2)=12 age(1) =10,過程的遞歸調用,從圖可知,求解分成兩個階段:第一個階段是”回推”,即將第n個人的年齡表示為第(n-1)個人年齡,直到第1個人的年齡。此時age(1)已知,不必再前推。然后開始第二階段,采用遞推方法,從第1個人的已知推算出第2個人的年齡。 一個遞歸的問題可以分為“回推”和“遞推”兩個階段。要經(jīng)歷許多步才能求出最后的值,還必須要有一個結束遞歸的條件。例如,age(1)=10,就是使遞歸結束的條件,過程的遞歸調用,可以用一個函數(shù)來描述上述過程: Function age(ByVal n as Integer) As Integer Dim c As Integer if n=1 then c = 10 else c = age(n-1) + 2 遞歸調用 End if return c End Function,Age(3) 得到age(3),c=age(2)+2,c=age(1)+2,c=10,age函數(shù) n=3,age函數(shù) n=2,age函數(shù) n=1,Age(1) = 10,Age(2) = 12,Age(3) = 14,過程的遞歸調用,顯示TreeView控件中的所有節(jié)點 Sub PrintNodes() For Each trNode As TreeNode in treeView1.Nodes PrintRecursive(trNode) Next End Sub Sub PrintRecursive(ByVal trNode As TreeNode) MessageBox.Show(trNode.Text) For Each tn As TreeNode in trNodes.Nodes PrintRecursive(tn) 遞歸調用 Next End Sub,遍歷TreeView控件中每個節(jié)點,利用遞歸方法可完成此操作,該方法循環(huán)訪問每個樹集合中的每個節(jié)點。,從數(shù)據(jù)庫中得到數(shù)據(jù)在TreeView控件顯示,有如下的數(shù)據(jù)表(節(jié)點表):,該數(shù)據(jù)表中記錄如下,從數(shù)據(jù)表記錄中: ParentIndex= -1表示該節(jié)點為TreeView控件的根節(jié)點. 表中對應的TreeView控件節(jié)點如圖所示:,從數(shù)據(jù)表中以absIndex字段順序查詢出數(shù)據(jù) 調用InitTree(treeView1.Nodes, “-1”)過程。該過程如下 Sub InitTree(ByRef nodes As TreeNodeCollection, ByVal sParentIndex As String) Dim tmpNode As TreeNode ,absIndex As String 選出數(shù)據(jù)源中ParentIndex為sParentIndex數(shù)據(jù)行,放在行集合DataRow的drs中 循環(huán)添加TreeNode, 即添加ParentIndex= sParentIndex的所有記錄(子節(jié)點) For Each dr As DataRow In drs 獲得節(jié)點所需數(shù)據(jù) tmpNode = New TreeNode tmpNode.Text = dr(“類別“) absIndex = dr(“AbsIndex“) nodes.Add(tmpNode) 添加節(jié)點 遞歸調用, 添加子節(jié)點下的所有子節(jié)點 InitTree(nodes(nodes.Count - 1).Nodes, absIndex) Next End Sub,從數(shù)據(jù)庫中得到數(shù)據(jù)在TreeView控件顯示,要利用上面數(shù)據(jù)表中的數(shù)據(jù)在TreeView控件上顯示,也要用到遞歸方法,隨堂練習,利用數(shù)據(jù)庫節(jié)點表中是數(shù)據(jù),來創(chuàng)建如下的樹視圖,關于DataGridView控件,DataGridView控件具有極高的可配置性和可擴展性,它提供大量的屬性、方法和事件,可以用來對該控件的外觀和行為進行自定義。 當需要在Windows窗體應用程序中顯示表格數(shù)據(jù)時,應首先考慮使用DataGridView控件,然后再考慮使用其他控件(例如DataGrid)。 一般設置兩個屬性: DataSource:某個數(shù)據(jù)集對象 DataMember:該數(shù)據(jù)集對象的某個表,用代碼為DataGridView控件獲取數(shù)據(jù)及設置一些屬性,在屬性窗口設置DataGridView的屬性,小結,本任務學習了TreeView、DataGridView等高級控件的使用和過程的遞歸調用,完成TreeView控件中的節(jié)點在數(shù)據(jù)庫的保存,以及數(shù)據(jù)庫中的數(shù)據(jù)在TreeView控件上的顯示,習題,以下有關DataGrid控件的內容為選學內容,關于DataGrid控件,DataGrid控件用于顯示數(shù)據(jù)表中的數(shù)據(jù),該控件可用來顯示單個表,也可以顯示多個不相關的表,也可以顯示多個相關的表。,若工具箱中找不到DataGrid控件,可以在“所用 Windows窗體”分組工具箱中,右鍵,然后選擇“選擇項”,在出現(xiàn)的窗口中,選擇“.NET Framework組件”選項卡,找到“DataGrid”然后在其前面打勾。然后點“確定”。那么DataGrid就添加到工具箱中。,DataGrid控件用于顯示數(shù)據(jù)表中的數(shù)據(jù),該控件可用來顯示單個表,也可以顯示多個不相關的表,也可以顯示多個相關的表 單個表:該表數(shù)據(jù)顯示在一個網(wǎng)格中 多個不相關的表:網(wǎng)格可顯示一個樹視圖,可通過瀏覽該樹視圖找到想要顯示的表。 多個相關表:指定讓網(wǎng)格顯示父表。父表中的記錄允許用戶定位到相關的子行,DataGrid控件的相關知識,DataGrid控件應在設計時使用DataSource和DataMember屬性,或在運行時使用SetDataBinding方法將其綁定到數(shù)據(jù)源。 對于DataGrid有效的數(shù)據(jù)源包括:DataTable類對象、DataView類對象、DataSet類對象和DataViewManager類對象等。,DataGrid控件的相關知識,在DataGrid控件中顯示數(shù)據(jù),DataGrid控件顯示數(shù)據(jù)表中的數(shù)據(jù),有下面兩種方法: 在程序中寫代碼顯示數(shù)據(jù)表數(shù)據(jù) 窗體設計時顯示數(shù)據(jù)表的數(shù)據(jù),利用代碼在DataGrid控件中顯示數(shù)據(jù),利用程序代碼在DataGrid控件中顯示單個數(shù)據(jù)表數(shù)據(jù),Dim sConnString As String = “連接字符串“ Dim Mycn As New OleDbConnection(sConnString) Dim sqlStr As String = “Select * from 表名” Dim myDataAdapter As New OleDbDataAdapter(sqlStr,Mycn) Dim myDataSet As New DataSet() myDataAdapter.Fill(ds,“表名”) 將數(shù)據(jù)集綁定到DataGrid控件上 dataGrid1.SetDataBinding(ds,”表名”),隨堂練習,利用代碼在DataGrid中顯示數(shù)據(jù)表中的數(shù)據(jù),將使用OleDbDataAdapter控件將數(shù)據(jù)庫引入程序,然后利用DataGrid控件,將數(shù)據(jù)顯示出來。同時該控件還具有更新數(shù)據(jù)庫數(shù)據(jù)的功能。 操作過程如下: 將OleDbDataAdapter控件從工具箱的數(shù)據(jù)工具組中拖入設計窗口中,此時出現(xiàn)數(shù)據(jù)適配器配置向導 單擊下一步按鈕,進入選擇數(shù)據(jù)連接頁面。單擊新建連接按鈕 出現(xiàn)數(shù)據(jù)連接屬性對話框,在提供程序選項卡中選擇Microsoft Jet 4.0 OLE DB Provider,在連接選項卡中選擇要連接到的Access數(shù)據(jù)庫。 單擊測試連接按鈕,顯現(xiàn)“測試連接成功”對話框,說明數(shù)據(jù)庫連接成功,窗體設計時在DataGrid控件中顯示數(shù)據(jù),單擊確定按鈕,返回選擇您的數(shù)據(jù)連接對話框,單擊下一步按鈕,進入選擇查詢類型界面中,選擇使用SQL語句 單擊下一步按鈕,進入生成SQL語句界面 單擊查詢生成器按鈕,出現(xiàn)查詢生成器和添加表對話框。 選擇你要顯示的數(shù)據(jù)表。在查詢生成器中選擇要查詢和列 單擊確定按鈕返回生成SQL語句界面。確定查詢無誤后,單擊下一步按鈕,出現(xiàn)查看向導結果界面 單擊確定按鈕,返回設計窗口中,選擇OleDbDataAdapter1,在屬性窗口出現(xiàn)生成數(shù)據(jù)集選項。,窗體設計時在DataGrid控件中顯示數(shù)據(jù)(續(xù)),單擊生成數(shù)據(jù)集選項,出現(xiàn)生成數(shù)據(jù)集對話框。使用默認選項,單擊確定按鈕,生成數(shù)據(jù)集合 從 工具箱的Windows窗體中拖動DataGrid控件到設計窗口 設置DataGrid控件的DataSource屬性為剛才生成的數(shù)據(jù)集,選擇DataMemeber屬性為要查詢的表名 最后,要在要查看數(shù)據(jù)事件寫如下代碼 OleDbDataAdapter1.Fill(DataSet11,”表名”),窗體設計時在DataGrid控件中顯示數(shù)據(jù)(續(xù)),隨堂練習,在窗體中設計在DataGrid中顯示數(shù)據(jù)表中的數(shù)據(jù),DataGrid控件的表樣式指定了特定表的格式設置,每個表一次只能定義一個表樣式,可通過DataGridTableStyles類的實例來設置表樣式 可借助DataGridColumnStyles類實例來創(chuàng)建一組自定義列樣式。 在窗體設計時設置數(shù)據(jù)表的表樣式和列樣式的步驟如下: 選擇窗體上的DataGrid控件,在“屬性”窗口中,選擇TableStyles屬性并單擊省略號,將會打開”DataGridTableStyle集合編輯器”對話框。 單擊 添加按鈕添加表樣式后,在MappingName屬性中,為表樣式設置映射名稱。映射名稱用于指定哪個表使用該樣式,設置DataGrid控件的表樣式和列樣式,單擊 添加按鈕添加表樣式后,在MappingName屬性中,為表樣式設置映射名稱。映射名稱用于指定哪個表使用該樣式,設置DataGrid控件的表樣式和列樣式,在表樣式中添加列樣式設置列的顯示格式。在“DataGridTableStyles集合編輯器”對話框中,選擇GridColumnStyle屬性并單擊省略號按鈕,將打開“GridColumnStyle集合編輯器”對話框。如圖所示,設置DataGrid控件的表樣式和列樣式,單擊添加,將一個列樣式添加到集合中 在MappingName屬性中,為列樣式設置映射名稱。映射名稱用于指定哪個字段應該使用這個列樣式。 在“GridColumnStyle集合編輯器”對話框中還可設置該列的列寬、對齊方式、列標題等。 重復上一步,為更多的列設置列樣式。,設置DataGrid控件的表樣式和列樣
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF 2201-2025膠體金免疫層析分析儀校準規(guī)范
- JJF 2197-2025頻標比對器校準規(guī)范
- 健身俱樂部合同范本
- 分成合同范本上樣
- 蝦皮合作合同范本
- 代家出租民房合同范本
- 企業(yè)股票承銷合同范本
- 加盟福田汽車合同范本
- 全新拖拉機買賣合同范本
- 獸藥欠賬銷售合同范本
- 2025年湘教版二年級美術下冊計劃與教案
- GB/T 4706.30-2024家用和類似用途電器的安全第30部分:廚房機械的特殊要求
- 2024年岳陽職業(yè)技術學院單招職業(yè)技能測試題庫及答案解析
- 消防安全管理制度完整版完整版
- 《朝天子詠喇叭》教學設計
- 《金融學基礎》實訓手冊
- 稅收基礎知識考試題庫
- 1t燃氣蒸汽鍋爐用戶需求(URS)(共13頁)
- 廣發(fā)證券分支機構人員招聘登記表
- 機電一體化系統(tǒng)設計課件姜培剛[1]
- 《質量管理小組活動準則》2020版_20211228_111842
評論
0/150
提交評論