我有一个 FlowLayoutPanel,我想用 ID(字符串)列表中的 ProgressBars 和当前进度条(整数)的位置来更新它。我将这个列表称为列表a。
FlowLayoutPanel.Controls
应该与列表a进行比较:
- 如果检测到新 ID,则应在
FlowLayoutPanel.Controls
集合中使用该 ID(名称)创建一个新控件。 - 如果集合中的 Control 在列表a
FlowLayoutPanel.Controls
中没有对应的名称,则应将其删除并处置。 - 应该更新两个集合上的控件(ProgressBar 的进度来自列表a中的整数)
令我困扰的是该FlowLayoutPanel.Controls
集合没有通用列表那么多的方法,因此我无法真正遵循互联网上的任何指南。
你能帮我怎么做吗?
谢谢!
编辑:回复 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
}