man*_*ril 2 .net c# wpf wpf-controls
我点击退出按钮时要删除所有标签项我的代码如下
foreach (object item in mainTab.Items)
{
TabItem ti = (TabItem)item;
if ("welcomeTabItem" != ti.Name)
{
mainTab.Items.Remove(item);
}
}
Run Code Online (Sandbox Code Playgroud)
但这会产生以下错误
错误 - 收集被修改; 枚举操作可能无法执行.
是否存在其他任何方法?
您可以获得所需的项目,然后清除控件并将项目添加回来.
// Note that `First` will throw an exception if the item isn't found.
TabItem ti = mainTab.Items.First(t => t.Name == "WelcomTabItem");
mainTab.Items.Clear();
mainTab.Items.Add(ti);
Run Code Online (Sandbox Code Playgroud)
或者,如果"WelcomeTabItem"可能不在Items:
TabItem ti = mainTab.Items.FirstOrDefault(t => t.Name == "WelcomTabItem");
mainTab.Items.Clear();
if(ti != null)
mainTab.Items.Add(ti);
Run Code Online (Sandbox Code Playgroud)
你不能IEnumerables在foreach循环中编辑.insted使用for循环.
for (int i = mainTab.Items.Count -1; i >=0; i--)
{
TabItem ti = (TabItem)mainTab.Items[i];
if ("welcomeTabItem" != ti.Name)
{
mainTab.Items.Remove(ti);
}
}
Run Code Online (Sandbox Code Playgroud)