Skip to main content
 首页 » 编程设计

c#之将控件集合与列表进行比较

2024年02月20日33lexus

我有一个 FlowLayoutPanel,我想用 ID(字符串)列表中的 ProgressBars 和当前进度条(整数)的位置对其进行更新。我将此列表称为 a。

FlowLayoutPanel.Controls 应该与列表a 进行比较:

  • 如果检测到新 ID,则应在中创建一个新控件 具有该 ID(名称)的 FlowLayoutPanel.Controls 集合。
  • 如果 FlowLayoutPanel.Controls 集合中的某个控件在 a 列表中没有对应的名称,则应将其删除并处置。
  • 应该更新两个集合上的控件(ProgressBar 的进度来自列表 a 的整数)

令我困扰的是 FlowLayoutPanel.Controls 集合没有通用列表那么多的方法,所以我无法真正遵循 Internet 上的任何指南。

你能帮我怎么做吗?

谢谢!

编辑:回复 DJ KRAZE 评论: 我用列表做了一些类似的事情,但正如我所说,控件集合没有列表所具有的某些方法。这是我的代码(可能不起作用,我重写了它以使其更容易理解):

//删除旧的

// Make a new list of IDs, where none of the IDs from myList1 can be found in myList2 
var remove = myList1.Where(f => !myList2.Any(g => g == f.ID)); 
 
//Do some operation for the object which is about to get removed 
foreach (Object obj in remove) 
{ 
    // Some operation            
} 
// remove from list 
myList1.RemoveAll(i => remove.Contains(i)); 

//删除重复项

// Remove Duplicates from myList2, so only the remaining object are to be started 
myList2.RemoveAll(f => myList2.Any(g => g.ID == f)); 

//将myList2剩余的对象添加到myList1

foreach(Object obj in myList2) 
{ 
// add to myList1 and do some operation, like starting it 
} 

请您参考如下方法:

为所有扩展方法包含 System.Linq。