微軟bug .net元件被容器引用陷阱的程式碼範例
.net(C#) WinForm開發,因為是視覺化設計,所以可以透過手動,直接將某個需要的元件加入到設計介面中,.net會自動將初始化這個元件,包括屬性設定等,加入到在 InitilizeComponent()中,而這個元件會加入對應的父元件中。所有的這些都是.net自動完成的。
但是,在某些場景下,我們需要手寫程式碼改變元件所屬的父容器。例如某些元件原來屬於父容器A,但我們要將這些元件調整到父容器B中,此時一個有趣的問題出現。
以下3個元件原來位於this:
this.Controls.Add(this.operRateUC); this.Controls.Add(this.personProductUg); this.Controls.Add(this.procedingPanel);
想調整這3個元件到adjustPanel元件。如下面的程式碼所示:
private void moveToAdjustPanel() { //AdjustablePanel是一个Control类 AdjustablePanel adjustPanel = new AdjustablePanel(); foreach (Control ultraControl in this.Controls) { if (ultraControl.GetType() == typeof(UltraGrid) || ultraControl.GetType() == typeof(UltraChart) || ultraControl.GetType() == typeof(Panel)) { adjustPanel.Controls.Add(ultraControl); } } }
這種批次移動元件到另一個父元件的方式是失敗的。
adjustPanel每次新加入了一個元件後,this.Controls的元件就會改變,並且未拋出foreach迭代器被修改的例外。 這不知道是不是微軟的一個bug。
在bbs.csdn.net上發文求助,回复,大都認為foreach遍歷會報錯,但是的確編譯器未拋出任何異常。我重新再編譯器重新做了一個簡單的測試,結果,發現foreach遍歷的確不報錯,但是得不到想要的結果。

測試程式碼如下,測試的預期是將2個Button元件從this中移到groupBox1。但結果卻是this 中還是有button1,只有button2被移到了groupBox1中。
奇怪點:
foreach迭代器被修改,為什麼不報錯? ? ?
為什麼只有button2移動到groupBox1了? ? ?
public Form1() { InitializeComponent(); moveButtonsToGroupBox(); //controlNames的结果为{groupBox1,button1} var controlNames = showAllChildControls(this); //controlNamesInGroup的结果为{button2} var controlNamesInGroup = showAllChildControls(this.groupBox1); } /// <summary> /// 移动位于Form上的按钮到GroupBox中 /// </summary> private void moveButtonsToGroupBox() { foreach(Control c in this.Controls) { if (c.GetType() == typeof(Button)) this.groupBox1.Controls.Add(c); } } /// <summary> /// 展示c控件的所有子组件的Name /// </summary> /// <param name="c"></param> /// <returns></returns> private List<string> showAllChildControls(Control c) { if (c == null) return null; List<string> controlNames = new List<string>(); foreach(Control chl in c.Controls) { controlNames.Add(chl.Name); } return controlNames; }
.net(C#) WinForm開發,因為是視覺化設計,所以可以透過手動,直接將某個需要的元件加入到設計介面中,.net會自動將初始化這個元件,包括屬性設定等,加入到InitilizeComponent()中,而這個元件會加入對應的父元件中。所有的這些都是.net自動完成的。
以上就是微軟bug .net元件被容器引用陷阱的程式碼範例的內容,更多相關內容請關注PHP中文網(www.php.cn)!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

隨著蘋果WWDC發表會2024圓滿落幕,不僅揭曉了macos15,其中最受關注的還是蘋果iOS18新系統的更新,雖然有很多新功能出現,但是作為蘋果iOS18首版不免讓人糾結是否有必要升級蘋果iOS18,在最新發表的蘋果iOS18中又有哪些BUG存在呢?經過真實的使用測評,以下是蘋果iOS18bug匯總,一起來看看。目前有許多iPhone用戶都搶先升級到了iOS18.但各種系統Bug讓人難受。有部落客表示,升級iOS18要謹慎,因為「Bug多到飛起」。部落客表示,如果你的iPhone是

遊戲bug是什麼意思在玩遊戲的過程中,我們常常會遇到一些意想不到的錯誤或問題,例如角色卡住、任務無法繼續、畫面閃爍等等。這些不正常的現象就被稱為遊戲bug,也就是遊戲中的故障或錯誤。在本文中,我們將探討遊戲bug是什麼意思以及對玩家和開發者的影響。遊戲bug是指在遊戲的開發或運作過程中出現的錯誤,導致遊戲無法正常進行或出現不符合預期的情況。這些錯誤可能是由於

系統bage就是指系統bug;bug原意是“臭蟲”,現在用來指稱電腦上存在的漏洞,原因是系統安全策略上存在的缺陷,有攻擊者能夠在未授權的情況下訪問的危害;廣義上,bug可用作形容各領域範圍內出現的漏洞或缺陷。

有些人想更新win11,但不知道win11bug多嗎,更新會不會出問題,實作在win11有bug,不過對使用影響不大。 win11bug多嗎:答:win11bug現在還是比較多的。不過這些bug對於日常使用的影響不大。如果使用者對於日常的使用要求很高的話,建議還是晚點再使用吧。 win11bug匯總一、資源管理器1、有時候會出現記憶體溢出,導致資源管理器記憶體佔用高。 2.這種情況會導致記憶體佔用超過70%,電腦卡頓、甚至崩潰。二、衝突死機1、部分應用程式相容性不足,導致互相衝突。 2、雖然衝突程序比較少,

BUG的生命週期就是一個BUG被發現到這個BUG被關閉的過程,具體過程為:1、發現BUG,即發現軟體程式的漏洞或缺陷;2、提交bug,需要盡量描述這個缺陷的屬性、重現環境、類型、等級,優先順序以及詳細的重現步驟、結果與期望等;3、指派bug,即將問題直接指派給對應的開發人員;4、分析並確認為缺陷;5、處理並修復BUG; 6、回歸驗證BUG;7、關閉BUG。

網路熱詞bug是指電腦上存在的漏洞。漏洞*(bug)是在硬體、軟體、協定的特定實現或系統安全策略上存在的缺陷,從而可以使攻擊者能夠在未授權的情況下存取或破壞系統。漏洞可能來自應用軟體或作業系統設計時的缺陷或編碼時產生的錯誤,也可能來自業務在互動處理過程中的設計缺陷或邏輯流程上的不合理之處。

PrettyErrors 是一个精简 Python 错误信息的工具,特点是界面十分简洁友好。它最显著的功能是支持在终端进行彩色输出,标注出文件栈踪迹,发现错误信息,过滤掉冗余信息,提取出关键部分,并且进行彩色标注,从而提高开发者的效率。写代码本身就很不容易,特别是在几万行的代码中出现一个bug,一时半会找不到问题所在,这个时候,你一定很抓狂,很烦躁。特别是Python代码出错了,满屏幕大段大段的错误信息提示,想定位错误更是难上加难。先来看看上面这段 traceback 只有一种颜色,无法像代码高

在微軟更新了win101903版本之後,新的版本除了修復了先前版本出現的bug、新增並改進了一些功能的同時,也不可避免的出現了新的版本中存在的問題。其中大多都是關於相容性和穩定性的bug,但好在問題不大。具體內容大家就來和小編一起看一下~希望可以幫助到你。 win10最新版本1903BUG有什麼微軟宣布已經修復了Windows102019五月更新中的三個嚴重BUG1、首先是杜比全景聲(DolbyAtoms)和家庭影院的音頻問題。某些裝置可能在安裝Version1903後遺失音訊。原先該音頻BUG
