如何检查ToolStripMenuItem DropDownItems中是否已存在项目?

时间:2015-06-02 21:27:55

标签: c# .net winforms

overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;

我想检查items = File .ReadLines(RecentFiles) .Select(line => new ToolStripMenuItem() { Text = line }) .ToArray(); recentFilesToolStripMenuItem.DropDownItems.AddRange(items);

中是否已存在这些项目

如果不存在则添加但如果存在则不添加。

1 个答案:

答案 0 :(得分:1)

你基本上有两个集合:items& recentFilesToolStripMenuItem.DropDownItems

使用Linq,您应该可以 Except() 一个Where()来仅添加两个集合之间的差异。

未经测试。

<德尔> recentFilesToolStripMenuItem.DropDownItems.AddRange(items.Except(recentFilesToolStripMenuItem.DropDownItems));

经过测试

recentFilesToolStrip.DropDownItems.AddRange(
    items
    .Where(i => !recentFilesToolStrip.DropDownItems
                 .OfType<ToolStripMenuItem>()
                 .Select(t => t.Text).Contains(i.Text)
          ).ToArray()
);

SLaks评论指的是执行以下操作:

recentFilesToolStripMenuItems.DropDownItems.Clear();
recentFilesToolStripMenuItems.DropDownItems.AddRange(items);