• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      C#案例教學(xué)之模擬資源管理器瀏覽功能

      2013-04-07 00:38:07段莎莉
      關(guān)鍵詞:磁盤控件圖標(biāo)

      □段莎莉

      ( 山西國際商務(wù)職業(yè)學(xué)院 信息系,山西 太原 030031)

      一、案例設(shè)計背景

      高等職業(yè)教育具有“高等教育”和“職業(yè)教育”的雙重屬性,是高等教育發(fā)展中的一個類型,不是其中一個層次,具有不可替代的作用,其培養(yǎng)的目標(biāo)定位明確為培養(yǎng)一線的勞動者、操作者、服務(wù)者和管理者。有了職業(yè)技能,就能獲得企業(yè)運作的基層經(jīng)驗,再加上高職院校不同于職業(yè)培訓(xùn)機構(gòu)的綜合素質(zhì)的培養(yǎng),才能進一步提升就業(yè)空間,實現(xiàn)人才的可持續(xù)發(fā)展。計算機與應(yīng)用技術(shù)作為高職教育設(shè)置的傳統(tǒng)專業(yè),我們秉承“工學(xué)結(jié)合,以能力為本位、以職業(yè)實踐為主線”的高職教育理念制定人才培養(yǎng)方案,設(shè)置課程體系,開設(shè)課程時充分考慮學(xué)生的就業(yè),適當(dāng)選取時下熱門實用的語言。基于這種考慮,將《C#程序設(shè)計》作為專業(yè)核心課程,C#是微軟公司專門為.net平臺設(shè)計的完全面向?qū)ο蟮恼Z言,從C,C++和Java等多種語言繼承發(fā)展而來,博采眾長,簡言之,綜合了圖形化可視操作和C++的高運行效率,以其強大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.net開發(fā)平臺的首選語言,是學(xué)生就業(yè)時必備殺手锏之一。該課程緊跟企業(yè)技術(shù)應(yīng)用和人才需求崗位而開設(shè),教學(xué)中以項目開發(fā)過程為導(dǎo)向,采用案例教學(xué)法,目的是培養(yǎng)學(xué)生具備應(yīng)用管理軟件底層代碼的能力,職業(yè)定位是企業(yè)Visual C#.net程序員,注重核心職業(yè)技能和職業(yè)素質(zhì)的培養(yǎng)。

      我國自上世紀(jì)引入案例教學(xué)法,在各個學(xué)科深入開展廣泛應(yīng)用,取得了較好的教學(xué)效果。它是在教師的指導(dǎo)下,根據(jù)教學(xué)目的要求,組織學(xué)生對案例的調(diào)查、閱讀、思考、分析、討論和交流等活動,教給他們分析問題和解決問題的方法或道理,進而提高分析問題和解決問題的能力,加深學(xué)生對基本原理和概念的理解的一種特定的教學(xué)方法。這個過程中案例的選取是關(guān)鍵,案例內(nèi)容應(yīng)具有一定的代表性和普遍性,涉及的知識多且全面,通過學(xué)習(xí)能讓學(xué)生舉一反三,從多角度對所學(xué)理論加以驗證,從中得出正確結(jié)論。有了這樣的思路,我們加大了《C#程序設(shè)計》課程案例選取的深度和廣度,向步入準(zhǔn)職業(yè)領(lǐng)域方向過渡,擴大案例所涉及知識范圍,加長讀寫代碼篇幅,通過合適的項目引導(dǎo),激發(fā)學(xué)習(xí)興趣,進而把理論教學(xué)與實踐教學(xué)有機地結(jié)合起來,充分發(fā)掘?qū)W生的創(chuàng)造潛能。

      二、windows資源管理器仿真模擬案例的實現(xiàn)

      (一)界面設(shè)計

      界面為帶有標(biāo)題欄、菜單欄、工具欄、地址欄、狀態(tài)欄和用splitCotainer容器分割控件分成左右兩部分的TreeView樹形結(jié)構(gòu)控件和ListView列表視圖控件,左邊用splitContainer分成上下兩部分,上面放置“文件夾”工具條用于轉(zhuǎn)換“資源管理器”視圖,下面放置TreeView樹形結(jié)構(gòu)控件,為了讓程序適應(yīng)窗體大小的改變,設(shè)置splitCotainer和內(nèi)置控件停靠屬性dock為fill,且分割控件的固定面板設(shè)置為panel1,當(dāng)窗體調(diào)整大小時panel1能保持不變。另外,讀者可能頭疼按鈕圖標(biāo),可以采用系統(tǒng)默認(rèn)的圖標(biāo)。

      在設(shè)計階段縱然讓地址欄上的各個按鈕布滿工具欄的寬度,由于放置地址組合框的工具欄的dock屬性為top,所以隨著窗體大小改變,工具欄的寬度是會隨著放寬,并且“地址”標(biāo)簽和“轉(zhuǎn)到”按鈕是左、右對齊,造成在地址組合框和“轉(zhuǎn)到”按鈕之間留下了間隙,故在工具欄的Resize事件中重新計算并調(diào)整地址組合框的寬度,通過foreach循環(huán)將除地址組合框以外的項目的寬度相加,用工具欄的新寬度將其減去再減一定的數(shù)值,為的是調(diào)整完寬度不讓其它項目溢出。

      (二)功能實現(xiàn)

      仿真設(shè)計的功能實現(xiàn)完全參考windows資源管理器的瀏覽功能設(shè)計。

      1.加載本地磁盤列表。窗體加載時調(diào)用ListDrivers()加載本地磁盤列表,首先將treeview中的結(jié)點清空,再用treeview的add(“結(jié)點名稱”)方法動態(tài)添加名為“我的電腦”根結(jié)點nodes[0]并使其成為selectednode,由于窗體加載和選擇根結(jié)點時都要加載本地磁盤列表,清空結(jié)點避免本地磁盤列表重復(fù)添加,動態(tài)添加避免清空在設(shè)計階段添加的根結(jié)點后找不到nodes[0],無法將本地磁盤列表作為“我的電腦”的子結(jié)點添加進去。

      有了根結(jié)點后通過代碼將本地磁盤列表作為其子結(jié)點動態(tài)地加入treeview中,使用DriveInfo類的GetDrives()方法提取本地邏輯磁盤盤符(如C:等)到字符串?dāng)?shù)組中,采取循環(huán)方法將數(shù)組元素生成treenode添加到treeview1.nodes[0],同時生成listviewitem添加到listview中,一是為了正確顯示結(jié)點名稱,通過判斷drivetype來區(qū)別“本地磁盤、CDROM和可移動磁盤”,并修改結(jié)點的text屬性;二是為了正確顯示結(jié)點圖標(biāo),將treeview調(diào)整為小圖標(biāo)視圖并與imagelist1相關(guān)聯(lián),listview調(diào)整為大圖標(biāo)視圖與imagelist2相關(guān)聯(lián)。

      2.加載邏輯磁盤資源。該功能在treeView_BeforeExpand事件中實現(xiàn),結(jié)點即將展開前觸發(fā)事件,通過事件參數(shù)e定位到每個即將展開的結(jié)點,也就是即將被單擊“+”號的結(jié)點,只要分配給當(dāng)前結(jié)點的集合不為空,通過調(diào)用NodeUpdate(e.node)[1]就能將各級結(jié)點的子目錄作為子結(jié)點添加到其集合中。首先調(diào)用自定義GetFilePath(e.node)[2]獲取當(dāng)前結(jié)點絕對路徑,用它生成操作文件夾的目錄對象,用GetDirectories()方法提取該對象的子目錄集合,由于每個結(jié)點子目錄集合的元素個數(shù)不定,故循環(huán)的次數(shù)不定,只能采用foreach循環(huán)將集合中的對象生成treenode作為當(dāng)前結(jié)點e的子結(jié)點添加到treeview中,由于treeview控件和imagelist1相關(guān)聯(lián),所以將新加下結(jié)點的圖標(biāo)設(shè)置為imaglist1中索引為4的文件夾圖標(biāo),將其選擇后的圖標(biāo)設(shè)置為索引為5即呈打開狀態(tài)的文件夾圖標(biāo)。首次加入時顯示為文件夾關(guān)閉圖標(biāo),當(dāng)單擊成為所選對象后顯示為文件夾打開圖標(biāo)。

      GetFilePath(TreeNode node) 方法和系統(tǒng)提供的node.fullpath屬性實現(xiàn)的功能一樣,但是由于在加載磁盤列表時修改了其text屬性,fullpath屬性得不到結(jié)點的絕對路徑,故改寫其實現(xiàn)過程為GetFilePath(),通過判斷所選結(jié)點的text屬性,如果選擇根結(jié)點“我的電腦”,則返回空字符路徑,表示沒有合法路徑;如果選擇“本地磁盤”結(jié)點,則返回node.name即drive.name,這就解決了name和text不一致的問題;如果選擇“本地磁盤的子目錄”結(jié)點,則遞歸調(diào)用GetFilePath(),層層向上直至遍歷到“本地磁盤”,從而得到該結(jié)點的fullpath。

      3.瀏覽邏輯磁盤資源。該功能分為正向和反向兩部分來實現(xiàn),正向瀏覽是單擊treeview結(jié)點在listview中加載相應(yīng)資源,反向瀏覽是激活listview中資源結(jié)點的同時在treeview中相應(yīng)結(jié)點處于被選擇狀態(tài)。

      正向瀏覽功能在treeView1_ AfterSelect事件中實現(xiàn),結(jié)點被選擇后觸發(fā)事件,通過事件參數(shù)e提供數(shù)據(jù)且能定位到當(dāng)前被選擇的結(jié)點,調(diào)用ListUpdate(GetFilePath(e.node))[3]就能將當(dāng)前結(jié)點的子目錄和子文件添加到listview控件中。首先,將listview清空,因為每選擇一個結(jié)點就會加載其子目錄和子文件,如果不清空listview,就會將新增listitem添加到原來加載的項目之后,出現(xiàn)不合理的邏輯結(jié)構(gòu)。

      其次,該方法調(diào)用當(dāng)前結(jié)點的路徑即GetFilePath(e.node)作參數(shù),在加載listview項目時如果選擇“我的電腦”根結(jié)點則返回空字符串的無效路徑,此時調(diào)用ListDrivers()方法用大圖標(biāo)的形式加載本地磁盤列表;否則,先創(chuàng)建當(dāng)前有效結(jié)點e.node文件夾對象DirectoryInfo currentDir = new DirectoryInfo(newPath),獲取子目錄集合currentDir.GetDirectories()和子文件集合currentDir.GetFiles()分別生成treenode結(jié)點和listviewitem項目,用foreach循環(huán)將其依次添加到treeview和listview中,并統(tǒng)計其count更新到狀態(tài)欄中。

      第三,添加子文件時關(guān)鍵問題是圖標(biāo)的獲取,用GetSystemIcon[4]類GetIconByFileName方法獲取后將其添加到與之關(guān)聯(lián)的小圖標(biāo)顯示控件Imagelist1集合中以備后用。

      需注意的兩個問題:(1)由于系統(tǒng)中擴展名為exe的文件圖標(biāo)不盡相同,故添加exe圖標(biāo)時不能用擴展名作關(guān)鍵字,而是用文件名作關(guān)鍵字,且每次添加新的子文件前先將與之關(guān)聯(lián)的Imagelist1中的exe圖標(biāo)清除,防止套用不正確的exe圖標(biāo);(2)非exe文件的圖標(biāo)用其擴展名作關(guān)鍵字將其圖標(biāo)添加到Imagelist1中,故添加非exe文件時先根據(jù)擴展名判斷Imagelist1中有無這類文件的圖標(biāo),有就直接用,沒有就先添加后再使用。

      反向瀏覽功能在listView1_ItemActivate事件中實現(xiàn),雙擊激活listview中的項目后發(fā)生。實現(xiàn)時,首先將TreeView的HideSelection屬性設(shè)為False,意味著即使TreeView失去焦點,先前所選擇的結(jié)點依舊將以灰色背景被顯示出來,這樣可以保留訪問TreeView結(jié)點的路徑痕跡;其次在加載本地磁盤列表時將“我的電腦”根結(jié)點列為SelectedNode,這樣初始運行程序時相當(dāng)于單擊了我的電腦,也能為后續(xù)查找listview中被激活項目時提供父結(jié)點;(3)在listView1_ItemActivate事件中添加代碼,通過foreach循環(huán)在TreeView.SelectedNode的集合中查找與ListView被激活項目Text一致的結(jié)點,讓其成為新的被選結(jié)點。

      4.僅展開被選結(jié)點。該功能在Treeview1_AfterExpand事件中實現(xiàn),該事件在treeview控件中的結(jié)點展開后觸發(fā),用來控制展開當(dāng)前結(jié)點的同時,折疊上次打開的兄弟結(jié)點,判斷當(dāng)前結(jié)點的PreNode和NextNode同級樹結(jié)點,如果存在就將其折疊,通過循環(huán),層層深入取得其所有的PreNode和NextNode,將其折疊,直到其不存在為止。

      三、教學(xué)效果評價

      案例教學(xué)法的優(yōu)勢在于:

      第一,引導(dǎo)學(xué)生將所學(xué)課本知識轉(zhuǎn)化為解決問題的實際應(yīng)用能力;大多數(shù)計算機專業(yè)的畢業(yè)生在回答能干什么時,往往列舉一堆課程名稱卻舉不出自己已完成的有代表性的案例項目,而案例教學(xué)法的實施過程中,學(xué)生拿到案例后,先進行消化,再主動搜索腦海中的知識,利用圖書館、網(wǎng)絡(luò)等途徑查閱資料,相互交流等多種渠道獲取補充新內(nèi)容,這無形中加深了對知識的理解,充分發(fā)揮學(xué)習(xí)主體自身的能動性,將知識轉(zhuǎn)換為能力,這給自身的發(fā)展提供了上升的空間。

      第二,促使學(xué)生養(yǎng)成獨立思考的習(xí)慣,學(xué)生給出的解決方案都是經(jīng)過獨立思考、反復(fù)驗證而得出的,幾番討論下來學(xué)生之間相互競爭,相互激勵,從內(nèi)心深處激發(fā)學(xué)生積極進取、刻苦學(xué)習(xí)的信心。

      第三,多方交流,教學(xué)相長,在軟件工程中測試人員和開發(fā)人員要相互避開,就是為了打破開發(fā)者的思維定勢,從中找出破綻,完善軟件功能,通過在課堂上討論,驗證,同學(xué)們可以提出自己的見解并質(zhì)疑現(xiàn)有方案,本身就是一個相互交流,相互提高的過程。課堂討論是教師直接管理案例教學(xué)的重要階段,筆者認(rèn)為針對待解決的問題讓學(xué)生各抒己見,求大同、存小異,通過具體的代碼驗證來挑選最佳的實現(xiàn)方案,讓學(xué)生體會到成功喜悅的同時引入下一個問題,讓學(xué)生的大腦持續(xù)處于新鮮興奮的狀態(tài),調(diào)動其學(xué)習(xí)的積極性。實踐證明,隨著案例教學(xué)的深入,解決問題的周期在逐漸縮短,這表明學(xué)生自主尋求理論知識來支撐論點的能力和拓展思維的能力均得到了提高。

      通過該案例的制作,讓學(xué)生們很好地掌握了.net平臺窗體設(shè)計程序的全過程,約700多行的代碼閱讀、代碼改錯、規(guī)范化檢查,引領(lǐng)學(xué)生體驗程序員的職業(yè)生涯。在此基礎(chǔ)上,提出新思考方向:得到文件路徑和名稱是完成管理文件的第一步,那如何利用.net框架提供的System.IO命名控件中的文件操作類實現(xiàn)路徑的后退、前進、向上,如何對文件剪切、復(fù)制和粘貼等編輯操作和讀取、寫入、查看屬性等操作呢?[5]有了新的思考方向,鼓勵學(xué)生大膽想象設(shè)計、查閱資料、編寫代碼、運行查錯、提出解決思路和可行性的實施方案,讓學(xué)生反復(fù)提煉、歸納總結(jié)自己的經(jīng)驗,有了這個成功的教學(xué)案例,今后可在高職層次《C#程序設(shè)計》案例化教學(xué)進程中走得更遠(yuǎn)。

      參考文獻:

      [1][3][4]資源管理器 [EB/OL].CSDN網(wǎng)站, http://download.csdn.net/detail/ZhengZhiRen/1013102.

      [2]王平華.C#.NET程序設(shè)計項目教程[M].北京:中國鐵道出版社,2008.

      [5]楊學(xué)全.C#技術(shù)基礎(chǔ)[M].北京:高等教育出版社,2008.

      猜你喜歡
      磁盤控件圖標(biāo)
      解決Windows磁盤簽名沖突
      電腦愛好者(2019年2期)2019-10-30 03:45:31
      Android手機上那些好看的第三方圖標(biāo)包
      Android手機上那些好看的第三方圖標(biāo)包
      修改磁盤屬性
      關(guān)于.net控件數(shù)組的探討
      軟件(2018年7期)2018-08-13 09:44:42
      磁盤組群組及iSCSI Target設(shè)置
      中國風(fēng)圖標(biāo)設(shè)計
      電影評介(2016年24期)2017-01-04 05:41:44
      創(chuàng)建VSAN群集
      有意思的廁所圖標(biāo)
      讀者(2015年13期)2015-05-14 11:41:05
      就這樣玩會VBA中常見的自定義控件
      電腦迷(2012年24期)2012-04-29 00:44:03
      榕江县| 青冈县| 深水埗区| 台东市| 壶关县| 云和县| 出国| 自贡市| 宜良县| 逊克县| 平定县| 大姚县| 石河子市| 襄汾县| 女性| 阳信县| 临海市| 桃园县| 会泽县| 铜鼓县| 剑阁县| 麻栗坡县| 牙克石市| 嘉善县| 深圳市| 洱源县| 宁安市| 台前县| 科尔| 井研县| 黔西县| 宝山区| 满洲里市| 读书| 德阳市| 工布江达县| 承德县| 红桥区| 阿拉善盟| 尉氏县| 赤峰市|