我在表单上动态创建控件(checkBoxes、listBox、trackBar...),然后使用编辑器放置 menuStrip。我想删除所有控件,并且我想保留菜单。当我使用这条线时:
this.Controls.Clear();
它删除了菜单和控件,但是据我了解,菜单项不是控件,它们直接在表单上(如果我写“this”并按一个点,我可以看到它们)。我试图循环遍历控件并仅在类型是控件之一时才将其删除,但是在删除某些控件时保留了一些控件。我使用controls.Count 循环。如果 Controls.Count > 1 像这样,我试图将整个循环放到另一个 while() 并退出:
while( this.Controls.Count > 1 )
{
for (int i = 0; i < this.Controls.Count; i++ )
{
if ((this.Controls[i].GetType() != typeof(MenuStrip)) )
{
this.Controls.RemoveAt(i);
}
}
}
它删除了控件并单独保留菜单,但消失的项目不会同时消失,但一段时间后,我想这是因为 while 运行不止一次。
我的问题:
1. 为什么不能一次删除所有控件,而我使用 controls.count 作为上限来迭代整个事情。
2. menuStrip 作为控件而toolStripMenuItmes 不是控件的意义何在。