C#尝试从组框中删除控件时出现奇怪的错误

C#尝试从组框中删除控件时出现奇怪的错误,c#,controls,groupbox,removeall,C#,Controls,Groupbox,Removeall,我现在面临一个非常奇怪的问题。我只是想删除组框中的所有控件,但它并没有删除所有控件。这看起来真的像是微软那边的一个bug。我尝试了许多不同的方法来移除这些控件,但没有一种有效。我还有另外两种方法,一次只删除一个控件(不,我不能在循环中为所有控件调用它),在那里它工作得很好。我不知道会是什么问题。希望有人知道解决这个问题的方法 foreach (Control c in fieldBox.Controls) // this does not work, it only removes my lab

我现在面临一个非常奇怪的问题。我只是想删除组框中的所有控件,但它并没有删除所有控件。这看起来真的像是微软那边的一个bug。我尝试了许多不同的方法来移除这些控件,但没有一种有效。我还有另外两种方法,一次只删除一个控件(不,我不能在循环中为所有控件调用它),在那里它工作得很好。我不知道会是什么问题。希望有人知道解决这个问题的方法

foreach (Control c in fieldBox.Controls) // this does not work, it only removes my labels (I have one txt and one lbl)
                fieldBox.Controls.Remove(c);

            for (int i = 0; i < fieldBox.Controls.Count; i++) // this does not work either
                fieldBox.Controls.Remove(fieldBox.Controls[i]);

            for (int i = 0; i < fieldBox.Controls.Count; i++) // still no success
                fieldBox.Controls.RemoveAt(i);

            for (int i = 0; i < fieldBox.Controls.Count; i++) // nope
                fieldBox.Controls.RemoveByKey(fieldBox.Controls[i].Name);

            foreach (Control c in fieldBox.Controls) // my final answer, but the outcome did not change
                fieldBox.Controls.RemoveByKey(c.Name);
foreach(fieldBox.Controls中的控件c)//这不起作用,它只删除我的标签(我有一个txt和一个lbl)
现场控制箱。移除(c);
for(int i=0;i
尝试减小计数器并移除控件

for (int i = fieldBox.Controls.Count - 1; i >= 0; i--) // hopefully successful
            fieldBox.Controls.RemoveAt(i);

fieldBox.Controls.Count的结果是什么?什么是
不起作用的意思?是否抛出错误?在循环集合时修改集合通常会失败。最好是存储控件,然后删除它。@ PraveEnPululSE六是正确的,但是我也在一个循环中查看它,不知何故它降低到四,然后随机停止。@ PaqGoMez没有,但是它没有删除所有控件,只有一半。考虑到当集合的大小递减时,您的索引正在递增。一半似乎是对的。