簡體   English   中英

刪除 C# 表單中的文本框只刪除了 foreach 中的一半

[英]Deleting Textboxes in a C# Form deletes only half in foreach

我試圖通過代碼刪除文本框,但是當我試圖刪除表單中的控件時,它只會刪除其中的一半。 所以,每次我點擊按鈕時,一半的文本框被刪除,然后當我再次點擊它時刪除一半,直到沒有更多的文本框。

我的代碼有問題嗎?

foreach (Control t in properties_panel.Controls)
                {
                    if (t is TextBox)
                    {
                        this.Controls.Remove(t);
                        t.Dispose();

                    }

                }

另外,這是刪除控制對象的正確方法嗎?

您不應該在迭代時修改枚舉器!

當您從同一集合的 foreach 循環中間的控件集合中刪除一個項目時,您已經更改了枚舉器中MoveNext()調用的下一個結束位置。 您需要先與枚舉器分開收集所有文本框引用:

var boxes = properties_panel.Controls.OfType<TextBox>().ToList();
foreach (var t in boxes)
{
    properties_panel.Controls.Remove(t);
    t.Dispose();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM