資源描述:
《程序設(shè)計(jì)風(fēng)格、幾個(gè)控件、遞歸在TreeView中的使用》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、程序設(shè)計(jì)風(fēng)格、幾個(gè)控件、遞歸在TreeView中的使用(2007-05-3120:31:24)轉(zhuǎn)載▼分類:.NET?????又來(lái)了,這次是Level100,木哈哈,簡(jiǎn)單總結(jié)及有些小細(xì)節(jié)需要注意的地方。?????應(yīng)用程序的設(shè)計(jì)風(fēng)格大致上分三種:MDI,SDI,資源管理器。所謂MDI的意思是多文檔應(yīng)用程序,例如Excel,程序的特點(diǎn)是有父窗口,也叫容器窗口,其他窗口均包含在父窗口內(nèi),是大多數(shù)復(fù)雜應(yīng)用程序的設(shè)計(jì)風(fēng)格。SDI就是單文檔界面應(yīng)用程序,例如Winrar,特點(diǎn)是只有一個(gè)底層窗口,所有彈出窗口均以ShowD
2、ialog方式顯示,適合功能簡(jiǎn)單,需求不高的應(yīng)用程序。資源管理器,這種設(shè)計(jì)風(fēng)格基本上都要使用到兩個(gè)控件-TreeView及ListView,這種設(shè)計(jì)風(fēng)格很少獨(dú)立使用,多與以上兩種混合使用,尤以MDI風(fēng)格居多。MDI/SDI共有的特點(diǎn)還有菜單欄(MenuStrip)、工具欄(ToolStrip)、狀態(tài)欄(StatusStrip)。?????MDI/SDI所用到的普通控件就那么幾種,MenuStrip,ToolStrip,StatusStrip,ImageList,Timer等等,都是拖拽就能搞定,簡(jiǎn)單的很,但
3、是幾點(diǎn)需要注意。1.如果是MDI風(fēng)格,記得將主窗體的IsMdiContainer屬性設(shè)置為true,并new新窗口對(duì)象后指定其父窗體,且不要調(diào)用ShowDialog()方法。2.控件一般都有幾個(gè)屬性比較需要注意,一個(gè)是Dock屬性,一個(gè)是Anchor,一個(gè)是AutoSize,Dock是定義要綁定到控件的邊框,簡(jiǎn)單的說(shuō)就是控件的排列方式,Anchor是當(dāng)主窗體縮放時(shí),控件的邊緣與哪邊距離保持不變,AutoSize是設(shè)置控件是否自動(dòng)調(diào)整大小以適應(yīng)容器大小,比較明顯一個(gè)例子,VS2003里加個(gè)StatusBar,
4、然后加幾個(gè)Panel,然后就開始調(diào)Panel大小,當(dāng)用VS2005加個(gè)StatusStrip,加幾個(gè)StatusLabel,好了,大小調(diào)不了了,這里就需要設(shè)置StatusLabel的AutoSize屬性,改為False就OK了。3.除了上面三個(gè),還要注意各個(gè)控件的ItemsCollection,各種Style及各種Alignment。????我這篇文章想多寫一點(diǎn)TreeView及ListView,這兩種控件不是我們拖拖拽拽就搞的定的,而且TreeView與數(shù)據(jù)庫(kù)聯(lián)系緊密,也涉及到一個(gè)很麻煩的東西-遞歸(Re
5、cursion),ListView則涉及到四種呈現(xiàn)方式,在某些方面,ListView還是比DataGridView優(yōu)秀的,話不多說(shuō),扔一個(gè)例子。????示例1:實(shí)現(xiàn)簡(jiǎn)單的Windows資源管理器????窗體:?????界面左邊是個(gè)TreeView,右邊是個(gè)ListView,因?yàn)槭呛?jiǎn)單實(shí)現(xiàn),沒(méi)有各種ico,當(dāng)在左邊選擇節(jié)點(diǎn)時(shí),右邊顯示相應(yīng)文件夾中的內(nèi)容(注意,即包含文件夾,也包含文件)。????OK,先分析,TreeView中的內(nèi)容在窗體Load的時(shí)候需要做什么工作?賤人甲跳出來(lái)大喊:“查詢出所有節(jié)點(diǎn)及節(jié)點(diǎn)下
6、的節(jié)點(diǎn)及節(jié)點(diǎn)下的節(jié)點(diǎn)下的節(jié)點(diǎn)……顯示到TreeView中”林大少將之一腳T飛,這是不科學(xué)的,賤人乙跳出來(lái)大喊:“老子電腦牛B,性能有保障!”林大少將之一腳T飛,這也是不科學(xué)的,我這破電腦不說(shuō)了,要是你160G里全是文件,窗體Load時(shí)查詢?nèi)课募?,那得了,?shù)分鐘內(nèi)你別干別的了,等吧。為了提高程序性能,最科學(xué)的是窗體生成時(shí),產(chǎn)生兩級(jí)節(jié)點(diǎn),為什么產(chǎn)生兩級(jí)?不產(chǎn)生兩級(jí)你盤符前面就沒(méi)+號(hào)。。太丑,然后應(yīng)該再寫TreeView的BeforeExpand事件,當(dāng)點(diǎn)擊節(jié)點(diǎn)時(shí),繼續(xù)產(chǎn)生下一級(jí)的下一級(jí)節(jié)點(diǎn),以此類推。???代
7、碼:privatevoidForm1_Load(objectsender,EventArgse)//窗體生成事件{????this.listView1.Columns.Add("Name",250,HorizontalAlignment.Left);????try????{????????//獲得以本地計(jì)算機(jī)硬盤驅(qū)動(dòng)器名字為成員的string數(shù)組?????????string[]drivers=Environment.GetLogicalDrives();?????????????????for(inti=
8、0;i