2012-12-19 2 views
1

ID (문자열) 목록과 현재 진행률 막대 (정수)의 위치에서 ProgressBars로 업데이트하려는 FlowLayoutPanel이 있습니다. 이 목록 나는 목록을 호출합니다.목록과 컨트롤 컬렉션 비교

FlowLayoutPanel.Controls는 목록 비교한다 : 새로운 ID가 발견 된 경우

  • , 새로운 제어하는 ​​ID (이름)과 FlowLayoutPanel.Controls 컬렉션이 생성되어야한다.
  • 컬렉션의 컨트롤에 의 해당 이름이 없으면 제거하고 처리해야합니다. 두 컬렉션에있는
  • 컨트롤 (목록 의 정수에서의 ProgressBar의 진행을) 업데이트해야
  • 무엇이 나를 괴롭게하는 것은 FlowLayoutPanel.Controls 컬렉션 일반만큼 많은 방법이 없다는 것입니다

목록이 없기 때문에 인터넷에서 어떤 가이드를 실제로 따라갈 수는 없습니다.

어떻게해야합니까?

감사합니다.

편집 : DJ 크라 제의 댓글에 답글 달기 : 나는 목록과 비슷한 만들었습니다,하지만 말했듯이, 제어 컬렉션 목록이하는대로 몇 가지 방법이 없습니다. 여기 내 코드입니다 (I보다 쉽게 ​​이해할 수 있도록 그것을 다시 썼다 작동하지 않을 수 있습니다) :

가 // 올드

// 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 
} 
+0

현재 컬렉션 아이템을 비교하는 방법을 보여주는 코드는 무엇입니까? – MethodMan

+0

#DJ KRAZE 내 질문에 내 이전 코드를 게시했습니다. – Janman

답변

1

FlowLayoutPanel (및 다른 컨테이너 컨트롤의 컨트롤 컬렉션)은 IEnumerable<T>을 구현하지 않지만 비 일반적인 IEnumerable 만 구현합니다. 따라서 IEnumerableCast<T> 확장 방법으로 IEnumerable<T>으로 변환하십시오.

flowLayoutPanel1.Controls 
    .Cast<Control>() 
    .Where(c => c.Name == "...") 
    .OrderBy(...) 
    ... 

주 : 그럼 당신은 LINQ의 모든 충분히 사용할 수있는 대부분의 LINQ 확장 방법은 IEnumerable<T>을 확장합니다.

+0

Ah보다 훨씬 적은 수의 메소드를 가지고있다. 그건 의미가 있습니다. 내가 그것을 시도하자, 그리고 나서 도움이된다면 나는 다시보고 할 것이다! – Janman

3

모든 확장 방법에 대해 System.Linq을 포함하십시오.

+0

나는 포함 시켰지만 Control 컬렉션은 일반적인리스트 인 – Janman

관련 문제