2008-10-27 2 views
2

대시 보드에 배치, 설명 등의 정보를 담는 대시 보드 항목 클래스를 만들었습니다. 현재 "라이브러리"에 포함 된 대시 보드 항목을 보유하기 위해 컬렉션 쌍을 사용하고 있습니다. 그 항목은 대시 보드 자체에 표시됩니다. 이 대시 보드를 여러 탭으로 만들지 묻는 질문을 받았고 첫 번째 목표는 각 탭에 대해 새로운 컬렉션을 만드는 것이 었습니다. 이를 위해 더 많은 탭이 대시 보드에 추가 될 때 이러한 대시 보드 항목 모음 중 많은 수가 추가 될 수있는 배열 또는 컬렉션이 필요합니다.컬렉션 모음이 가능합니까? 아니면 가장 좋은 방법입니까? C# .Net 3.5

이 경우 가능하며 그러한 경우 해당 컬렉션 선언에 대해 약간의 코드 스 니프를 얻을 수 있습니까? 변수가있는 단일 컬렉션을 사용하여 항목을 표시 할 탭을 표시하는 방법을 고려했습니다. 그러나 스크린과 라이브러리 간의 대시 보드 항목 이동을 관리하는 디스플레이 및 루틴에는 현재 개별 컬렉션이 필요합니다.

편집 : 답변 해 주셔서 감사합니다. 내가 그 (것)들을 전부 재미있는 찾아내는 동안 나는 나가 제임스 해결책으로 가기 위하여려고하고다는 것을 믿어 진 대답으로 그것을 표를 할 것이다.

답변

8
List< List<Placement>> ListofListOfPlacements = new List< List<Placement>>(); 

List<Placement> dashboard1 = new List<Placement>(); 
List<Placement> dashboard2 = new List<Placement>(); 
List<Placement> dashboard3 = new List<Placement>(); 
List<Placement> dashboard4 = new List<Placement>(); 

ListofListOfPlacements.Add(dashboard1); 
ListofListOfPlacements.Add(dashboard2); 
ListofListOfPlacements.Add(dashboard3); 
ListofListOfPlacements.Add(dashboard4); 
1

두 번째 컬렉션과 이전 정보 중 하나를 포함하는 클래스를 만들고 이러한 컬렉션을 보유해야하는 이유는 무엇입니까?

+0

동의합니다.어떤 시점에서 당신은 아마 각 객체가 아닌 "탭"에 대해 더 많은 informaction을 필요로 할 것입니다. – Kibbee

1

왜 대시 보드 항목 모음을 탭 페이지에 넣지 않으시겠습니까?

과 같이 :

public class DashboardTabPage : TabPage 
{ 
    public List<DashboardItem> DashboardItems { get; set; } 

    public DashboardTabPage() : this (new List<DashboardItem>()) 
    { 

    } 

    public DashboardTabPage(List<DashboardItem> items) :base ("Dashboard Thing") 
    { 
     DashboardItems = items; 
    } 

} 

공용 클래스 DashboardItem {}

당신은이 작업을 수행 할 수 있습니다 : 당신이 탭에 대해 이야기하고 있기 때문에

c.TabPages.Add(new DashboardTabPage()); 
1

, 당신이 원하는처럼 나에게 소리 탭 당 항목 세트를 사용하여 탭 이름에 키를 입력 한 사전에 가까운 항목입니다. .NET 3.5은 ILookup<,> 인터페이스를 추가 한 다음 MS의 구현은 불변이다

 ILookup<string, Foo> items = null; //TODO 
     foreach (Foo foo in items["SomeTab"]) 
     { 
      Console.WriteLine(foo.Bar); 
     } 

주 - 생성 후 편집 할 수 있습니다; 그러나, 나는 당신이 (다만 일반 .NET 수집 등)보다 효율적으로 작업 할 수 있습니다 그 MiscUtilEditableLookup<,>을 썼다 :

 var items = new EditableLookup<string, Foo>(); 
     items.Add("SomeTab", new Foo { Bar = "abc" }); 
     items.Add("AnotherTab", new Foo { Bar = "def" }); 
     items.Add("SomeTab", new Foo { Bar = "ghi" }); 
     foreach (Foo foo in items["SomeTab"]) 
     { // prints "abc" and "ghi" 
      Console.WriteLine(foo.Bar); 
     } 

EditableLookup<,>없이, 당신은 Enumerable.ToLookup 확장 방법을 통해 조회를 구축 할 필요가있다. 이 중 일부가 옵션처럼 소리가 나는 경우에

, 나는 (여러 탭을 가진) 사용자 대시 보드 가정 당

아래로, 당신이 조성 가야한다고 생각합니다 ...

0

자세한 세부 사항을 추가 할 수 있습니다 다양한 작업이 정의 된 대시 보드 항목 객체의 목록을 포함하는 대시 보드 객체의 목록을 포함하는 객체입니다. 다시 대시 보드 항목은 대시 보드 항목 객체에서 처리되거나 대시 보드 UI 객체에 대해 처리되는 개별 이벤트를 처리 할 수있는 모든 가능한 이벤트가 정의 된 사용자 정의 컨트롤이 될 수 있습니다.

SOA 및 재사용 가능한 구성 요소 기반 아키텍처를 따르려면이 방법을 사용하는 것이 좋습니다.

관련 문제