C# 删除子菜单项

C# 删除子菜单项,c#,winforms,C#,Winforms,我想删除子菜单项。我想保留前两个项目,并删除所有其他项目。 前两个的文本是“Beheer”和分隔符“-” 我试过这个: for (int i = 0; i < this.oracleToolStripMenuItem.DropDownItems.Count; i++) { if (this.oracleToolStripMenuItem.DropDownItems[i].Text != "&Beheer") { if ( this.oracleToo

我想删除子菜单项。我想保留前两个项目,并删除所有其他项目。 前两个的文本是“Beheer”和分隔符“-”

我试过这个:

for (int i = 0; i < this.oracleToolStripMenuItem.DropDownItems.Count; i++)
{
    if (this.oracleToolStripMenuItem.DropDownItems[i].Text != "&Beheer")
    {
        if ( this.oracleToolStripMenuItem.DropDownItems[i].Text != "-")
        {
            this.oracleToolStripMenuItem.DropDownItems.RemoveAt(i);
        }
    }
}
for(int i=0;i

这不会删除所有项目。

如果要保留前两项,只需执行以下操作:

while ( this.oracleToolStripMenuItem.DropDownItems.Count > 2 )
    this.oracleToolStripMenuItem.DropDownItems.RemoveAt(2);  
RemoveAt(2)将删除第三项,假设存在第三项。我们这样做直到只有2个存在


(2) 是第三项,因为第一项是(0)。

如果要保留前两项,只需执行以下操作:

while ( this.oracleToolStripMenuItem.DropDownItems.Count > 2 )
    this.oracleToolStripMenuItem.DropDownItems.RemoveAt(2);  
RemoveAt(2)将删除第三项,假设存在第三项。我们这样做直到只有2个存在


(2) 是第三项,因为第一项是(0)。

从列表中删除时,最好从底部开始,逐步向上。因为从列表中删除项目可能会更改循环中使用的索引。从下往上工作没有这个问题,它被称为反向或反向循环:
for(int i=this.oracleToolStripMenuItem.DropDownItems.Count-1;i>=0;i--)
从列表中删除时,最好从下往上开始。因为从列表中删除项目可能会更改循环中使用的索引。自下而上工作没有这个问题,它被称为反向或反向循环:
for(int i=this.oracleToolStripMenuItem.DropDownItems.Count-1;i>=0;i--)
也许你可以解释一下为什么你的数字“2”必须用在
RemoveAt()
-不让它看起来像一个神奇的数字。是的,部分-例如,告诉人们前4个元素将是第3个元素等等,这对你的答案来说是一个很好的补充。也许你可以解释为什么在
RemoveAt()
中必须使用数字“2”-不让它看起来像一个神奇的数字。是的,部分-但告诉人们前4个元素,例如,将是第3个元素,等等,这将是一个很好的补充你的答案。