我有一个 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。
