使用 linq 循环访问 winform 菜单项并更改属性值



我有一个上下文菜单。我遍历了所有菜单项,并根据一些布尔值禁用或启用它们。

这是我到目前为止所拥有的,但它不起作用:

contextMenu.MenuItems.Cast<MenuItem>().Select(x =>
{
   x.Enabled = someValue; 
   return x;
});

使用简单的foreach循环来更新您的值,LINQ用于查询

foreach(var item in contextMenu.MenuItems.OfType<MenuItem>())
{
    item.Enabled = someValue;
}

接近的是List<T>上的ForEach方法。我不认为它在技术上被认为是 LINQ,并且与核心 LINQ to Objects 方法不同,它不是IEnumerable<T>的一部分。无论如何,我猜你会更喜欢它而不是传统的foreach循环,因为它看起来像任何其他使用方法语法的 LINQ 查询。

contextMenu.MenuItems.Cast<MenuItem>().ToList().ForEach(x => x.Enabled = someValue);

最新更新