
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、在for,foreach語句中小心使用控件的sendtoback,bringtofront方今日寫了段vb。net遍歷控件的辦法,乍一看沒有什么問題,但結(jié)果卻出人意料,conol集合的元素沒有遍歷完,并且有重復(fù)的元素。 public sub setcontrollableandpropertyfromxml(byval parent as control) for each bcontrol as control in parent.contro if subcontrol.haschildren then setcontrollableandpropertyfromxml(subcontro
2、l) end if if mshosaiconfig.shosaisetting.items(subcontrol.name) is nothing then continue for end if subcontrol.tt = mshosaiconfig.shosaisetting.items(subcontrol.name).labletext dim itctl = subcontrol.parent.controls.item(mshosaiconfig.shosaisetting.items(subcontrol.name).componame) if not editctl is
3、 nothing then if not mshosaiconfig.shosaisetting.items(subcontrol.name).editable is nothing then editctl.enabled = mshosaiconfig.shosaisetting.items(subcontrol.name).editable end if end if next end sub 我向來以為是foreach轉(zhuǎn)變了讀取數(shù)據(jù)的數(shù)序,或者說他可能不是按挨次讀取,但用reflecter看了下,controls是controlconnection集合,這個集合實現(xiàn)了ienumerab
4、le接口,其本質(zhì)和用for語句遍歷是一樣的,他們都是index 1 的方式,用索引來拜訪的。所以問題不在foreach語句。 最后發(fā)覺是這一句editctl.enabled = mshosaiconfig.shosaisetting.items(subcontrol.name).editable出了問題。editctl是重寫過的combox控件,在onenabledchanged大事中用了,sendtoback和bringtofront辦法。 protected overres sub onenabledchanged(byval e as system.eventargs) mybase.o
5、nenabledchanged(e) if me.enabled then me.m_lblcombotext.visible = false else me.m_lblcombotext.visible = true me.sendtoback() me.m_lblcombotext.bringtofront() end if end sub 罪魁禍?zhǔn)拙褪沁@個sendtoback和bringtofront,這兩個函數(shù)的用法,可能會導(dǎo)致控件所在的父控件(parent)的controls集合元素移位,也就是假如我們在for,foreach語句中,對controls集合的元素調(diào)用了這兩個辦法,因為
6、controls的元素移動了,再按index 1 的方式來遍歷可能有未遍歷的元素移動到了controls集合的前面,造成遍歷不徹低。同理,已經(jīng)遍歷的元素移動到controls的后面會造成元素的重復(fù)。 sendtoback和bringtofront會轉(zhuǎn)變控件的“zindex“ 來轉(zhuǎn)變控件的顯示層次,來看看他的內(nèi)部實現(xiàn): public void sendtoback() if (this.parent != null) this.parent.controls.setchildindex(this, -1); else if (this.ishandlecreated this.gettoplev
7、el() safenativemethods.setwindowpos(new handleref(this.window, this.handle), nativemethods.hwnd_bottom, 0, 0, 0, 0, 3); = public virtual void setchildindex(control child, int newindex) this.setchildindexinternal(child, newindex); = internal virtual void setchildindexinternal(control child, int newin
8、dex) if (child = null) throw new argumentnullexception( child int childindex = this.getchildindex(child); if (childindex != newindex) if (newindex = this.count) | (newindex = -1) newindex = this.count - 1; base.moveelement(child, childindex, newindex); child.upzorder(); layouttransaction.dolayout(this.owner, child, propertynames.childindex); 關(guān)鍵就是這句base.moveelement(child, childindex, newindex);會造成controls內(nèi)元素的重新羅列。 那么對要遍歷controls,并且要轉(zhuǎn)變其中control元素顯示層次應(yīng)當(dāng)怎么辦呢? 法一:聲明一個list control lstcontrols,先遍歷controls,把這些元素加到lstcontrols中,再對lstcontrols遍歷,調(diào)用sendtoback辦法。這種辦法主
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 哈爾濱醫(yī)科大學(xué)《書畫裝裱》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東工程職業(yè)技術(shù)學(xué)院《工程招投標(biāo)與概預(yù)算》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇航運職業(yè)技術(shù)學(xué)院《中學(xué)語文教學(xué)設(shè)計與技能訓(xùn)練(二)》2023-2024學(xué)年第二學(xué)期期末試卷
- 黑龍江司法警官職業(yè)學(xué)院《模擬電子技術(shù)課程設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東司法警官職業(yè)學(xué)院《數(shù)字特效合成》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津工藝美術(shù)職業(yè)學(xué)院《衛(wèi)生檢驗綜合技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 東莞職業(yè)技術(shù)學(xué)院《計算機(jī)與操作系統(tǒng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢工程科技學(xué)院《外國文學(xué)名篇》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025三年級湘教版語文下學(xué)期期末知識點歸納復(fù)習(xí)周末練習(xí)單
- PROMIS-評分量表-使用版
- 軟壓光機(jī)計算說明
- 森林防火安全責(zé)任書(施工隊用)
- 《汽車性能評價與選購》課程設(shè)計
- 35kV絕緣導(dǎo)線門型直線桿
- 水庫應(yīng)急搶險與典型案例分析
- 49式武當(dāng)太極劍動作方位
- 工程成本分析報告(新)
- 國際學(xué)術(shù)會議海報模板16-academic conference poster model
- 經(jīng)典誦讀比賽評分標(biāo)準(zhǔn)【精選文檔】
- 高值耗材參考目錄
- 步兵戰(zhàn)斗動作
評論
0/150
提交評論