亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C#在組合框中實現(xiàn)樹形結(jié)構(gòu)數(shù)據(jù)

        2016-08-12 02:15:34葛玉曾垂振楊云飛
        中國新通信 2016年13期

        葛玉 曾垂振 楊云飛

        【摘要】 本文通過分析了如何在C#中的組合框控件中實現(xiàn)多層次的樹形結(jié)構(gòu)列表數(shù)據(jù),使其具有TreeView的功能與特性,并以創(chuàng)建一個樹形結(jié)構(gòu)列表的用戶控件為例詳細(xì)闡述了實現(xiàn)方法。

        【關(guān)鍵詞】 組合框 樹形結(jié)構(gòu) C# TreeView

        C#是一種基于現(xiàn)代面向?qū)ο笤O(shè)計方法的語言,它是基于C語言和Microsoft.NET平臺開發(fā)的,它具有簡單、現(xiàn)代、通用的特點,它讓程序員可以快速地編寫各種基于Microsoft. NET平臺的應(yīng)用程序。組合框combox是一個常用控件,通常用作選擇器,在Visual Studio 2008軟件中,組合框有兩種方式,一種是不可輸入的下拉列表,一種是帶輸入框的下拉列表框,無論是哪一種方式,其下拉列表都是單一的項目列出,各項目之間為并列關(guān)系,如果想在組合框中實現(xiàn)帶層次關(guān)系的下拉選擇項,以組合框自帶的屬性無法實現(xiàn)。本文將通過一個全國行政區(qū)域選擇的實例,介紹如何在Visual Studio 2008中實現(xiàn)帶樹形結(jié)構(gòu)下拉選擇項的組合框,數(shù)據(jù)庫采用SQL Server2005。

        一、數(shù)據(jù)表設(shè)計

        需要實現(xiàn)樹形結(jié)構(gòu)的數(shù)據(jù)源是全國行政區(qū)域,分為省市區(qū)三級,主要有2個字段,即代碼(DM),區(qū)域名稱(MC),以代碼來區(qū)分省、市、區(qū)的層級關(guān)系,兩位代碼為一層,如:北京市為11,市轄區(qū)為1101,東城區(qū)為110101,北京市下轄縣為1102,密云縣為110228;以代碼的位數(shù)來區(qū)分行政區(qū)域樹中各節(jié)點的位置。全國行政區(qū)劃表結(jié)構(gòu)如表1所示。

        二、創(chuàng)建用戶控件UserControls

        用戶控件UserControls就是用戶自定義的控件,其好處就是代碼的復(fù)用性能夠在多個項目中調(diào)用該控件,將帶有樹形結(jié)構(gòu)數(shù)據(jù)的組合框創(chuàng)建為用戶控件,在需要的時候可以自由調(diào)用。

        在Visual Studio 2008設(shè)計器中,添加用戶控件,起名為UcCombTree,系統(tǒng)會自動生成一個UcCombTree.cs的類,在代碼編輯器中,將其繼承類改為ComboBox,使該用戶控件具有組合框ComboBox的特性,具體代碼如下所示:

        public partial class UcCombTree : ComboBox

        三、構(gòu)造控件屬性及事件

        用戶控件創(chuàng)建后,必須在函數(shù)中構(gòu)造與控件相對應(yīng)的屬性及事件,以方便在其它地方使用。針對組合框的特性,必須要構(gòu)造的事件有下拉列表展開DropDown事件,具體代碼如下:

        ToolStripDropDown dropDown;

        在下拉列表中的選項為樹形結(jié)構(gòu),即應(yīng)該有TreeView的特性,所以相應(yīng)的也需要構(gòu)造與TreeView有關(guān)的事件,包括有樹節(jié)點雙擊DoubleClick,選中樹節(jié)點SelectNode,通過代碼執(zhí)行完成后,重新生成解決方案,在Visual Studio 2008設(shè)計器的工具箱中出現(xiàn)一個新的組件UcCombTree.

        四、帶樹形結(jié)構(gòu)下拉選擇項組合框的實現(xiàn)

        將組件UcCombTree拖動到程序界面中,呈現(xiàn)出來的樣式為組合框樣式,如圖1所示。

        下面要解決的問題就是將行政區(qū)劃數(shù)據(jù)表中的內(nèi)容添加到UcCombTree的下拉列表中。在前面設(shè)計中,已經(jīng)在用戶控件UcCombTree中添加了與TreeView相關(guān)的屬性與事件,在構(gòu)造行政區(qū)劃樹結(jié)構(gòu)時,可直接使用TreeView的特性,將數(shù)據(jù)內(nèi)容加載到TreeView上??蓸?gòu)造創(chuàng)建樹的函數(shù)CreatTree,函數(shù)中設(shè)定兩個參數(shù),一個為目標(biāo)樹,另一個為數(shù)據(jù)來源。因為用戶控件UcCombTree也具有TreeView的特性,所以目標(biāo)樹即可設(shè)定為UcCombTree,數(shù)據(jù)來源采用DataTable。函數(shù)在執(zhí)行過程中,采用遍歷的方法,在數(shù)據(jù)表從前往后依次讀取每一個數(shù)據(jù),首先依據(jù)行政區(qū)劃代碼的長度來判斷該點屬于哪一節(jié)節(jié)點,2位則為第一級,4位則為第2級,6位則為第3級;如果某個數(shù)非第一級節(jié)點,使用截取函數(shù),獲取該代碼的前2位以判斷其上級節(jié)點位置,按此方法將數(shù)據(jù)表中的所有數(shù)據(jù)讀取完畢。

        實現(xiàn)算法如下:

        {

        遍歷數(shù)據(jù)表中的所有數(shù)據(jù);

        {

        讀取行政區(qū)劃代碼;

        讀取行政區(qū)劃地域名稱;

        在樹節(jié)點上記錄地域代碼和地域名稱;

        If(代碼長度為2)

        {

        則增加為第一層節(jié)點;

        }

        Else

        {

        找到該代碼的上一級代碼,添加為上一級代碼的子節(jié)點;

        }

        }

        帶樹形結(jié)構(gòu)的組合框在程序中的應(yīng)用如圖2所示。每個節(jié)點都對應(yīng)數(shù)據(jù)庫中的代碼與名稱兩個字段,使用數(shù)據(jù)時,如果需要地域名拼接,可把需要的節(jié)點名稱連接起來;如果不拼接,讀取當(dāng)前節(jié)點名即可。

        五、 結(jié)束語

        在C#中利用用戶控件構(gòu)建成帶有樹形結(jié)構(gòu)數(shù)據(jù)的組合框,將復(fù)雜的算法形成函數(shù)在用戶控件類中實現(xiàn),在需要反復(fù)調(diào)用時,只需要按照數(shù)據(jù)的規(guī)律修改數(shù)據(jù)讀取的方法即可。用戶控件與數(shù)據(jù)庫的有效結(jié)合也加快了程序運行的速度。

        參 考 文 獻(xiàn)

        [1] 郭忠南,層次結(jié)構(gòu)數(shù)據(jù)在組合框中樹形效果的動態(tài)實現(xiàn),計算機(jī)時代,2012.7

        [2] 吳文強(qiáng),用自定義TreeView控件實現(xiàn)層次結(jié)構(gòu)數(shù)據(jù)瀏覽功能,電腦編程技巧與維護(hù),2012.9

        欧美不卡视频一区发布| 国产性虐视频在线观看| 国产av熟女一区二区三区| 国产精品自在线拍国产| 亚洲毛片αv无线播放一区| 亚洲老女人区一区二视频| 亚洲国产成人久久精品不卡| 国产欧美日韩精品专区| 欧美人与动牲交片免费| 蜜桃一区二区免费视频观看| 国产亚洲成人精品久久久| 色哟哟精品视频在线观看 | 香蕉网站在线| 性一交一乱一乱一视频亚洲熟妇| 极品粉嫩小仙女高潮喷水网站| 和外国人做人爱视频| 国产精品毛片无码久久| 男的和女的打扑克的视频| 精品无码久久久久久久久水蜜桃| 无码人妻丰满熟妇区毛片| 日韩美女高潮流白浆视频在线观看| 免费人成在线观看播放视频| 亚洲av无码国产精品色午夜字幕 | 亚洲不卡av不卡一区二区| 最新在线观看免费的a站国产| 亚洲av成人片在线观看| 乱中年女人伦av| 亚洲熟女国产熟女二区三区| 一区二区亚洲精品在线| 国产午夜无码片在线观看影院| 色伊人国产高清在线| 日韩在线精品免费观看| 亚洲人成欧美中文字幕| 五月天激情小说| 国产一区二区毛片视频| 99视频在线精品免费观看6| 激情内射亚州一区二区三区爱妻| 亚洲AV无码成人精品区日韩密殿| 羞羞色院99精品全部免| 亚洲精品一区国产欧美| 日韩精品国产自在欧美|