2008-08-26 4 views
4

우리 프로젝트에서 SharpWired, 우리는 Firefox 또는 Safari의 다운로드 창과 유사한 다운로드 구성 요소를 만들려고합니다. 즉, 진행 막대, 단추 및 포함하지 않는 사용자 지정 컨트롤 인 다운로드의 단일 하향식 목록입니다.WindowsForms 및 C#의 컨트롤의 동적 인 하향식 목록?

각 행에 요소가 하나씩있는 단일 목록이 있어야한다는 요구 사항이 있습니다. 각 요소는 사용자 정의 컨트롤이어야합니다. 전체 목록은 동적으로 크기가 조정되어야하므로 목록을 길게/짧게 만들면 필요할 때 스크롤 막대가 추가되고 사용자 정의 컨트롤이 목록의 너비에 맞게 조정되어야합니다.

우리는 FlowLayoutPanel을 사용해 보았지만 우리가 원하는대로 작동하도록 크기를 조정하지 못했습니다. 가급적이면 사용자 지정 컨트롤의 앵커링을 Left & Right로 설정하면됩니다. 또한 TableLayoutPanel을 사용하려고 생각했지만 동적으로 행을 추가하는 것이 너무 큰 오버 헤드가 될 수 있습니다.

이것은 일반적인 사용 사례 여야하며 FlowLayoutPanel에는 직관적 인 방법이 없다는 것이 다소 이상하게 보입니다. 누구나 비슷한 일을 했습니까? 아니면 우리를 돕기위한 팁이나 트릭이 있습니까?

건배!
/adam

답변

2

위에서 설명한대로 DataRepeater 컨트롤을 통해 데이터 바인딩을 사용하지 않으려면 일반 Panel 컨트롤을 사용하고 AutoScroll 속성을 true로 설정하여 (스크롤바를 사용하도록 설정)

그런 다음 사용자 지정 컨트롤을 수동으로 추가하고 각각 Dock 속성을 Top으로 설정할 수 있습니다.

+0

그것이 우리가 해왔 던 것입니다. 데이터 바인딩 솔루션은 우리에게 너무 많은 오버 헤드가됩니다. –

1

.NET 3.5 SP1에서는 원하는대로 할 수있는 것처럼 들리는 DataRepeater Windows Forms 컨트롤을 도입했습니다. 다운로드 목록 (또는 목록이 나타내는 항목)에 바인딩하고 필요한 항목을 포함하도록 각 항목 패널을 사용자 정의하십시오.

+0

해당 컨트롤은 VisualBasic Power Pack에 있습니다. C#에서는 어떻게 사용합니까? –

+0

@Adam 아니오, VisualBasic 네임 스페이스에 있습니다. 모든 .NET 언어에서 사용할 수 있으며 .NET 3.5 SP1부터는 프레임 워크의 일부입니다. –

+0

아는대로 솔루션의 어셈블리를 참조하고 그 안에있는 메서드를 정상적으로 사용할 수 있습니다. 컴파일 된 .Net 어셈블리는 서로 원활하게 상호 운용 될 수 있습니다. 물론, 저는이 모임에 대한 특별한 경험이 없으며, 저는이 경우에 방금 말한 것을 보장 할 수 없습니다. :) – ZombieSheep