2012-12-03 3 views
2

나는 이것이 지금까지 그것을 발견하는만큼 복잡 할 수 없다는 것을 확신합니다!사용자 컨트롤 (winforms)의 가로 목록

사용자 컨트롤의 가로 목록을 렌더링하려고합니다. 그들 중 다수가있을 것입니다. 따라서 가상 목록의 일부 형식이 선호 될 수 있습니다.

각 사용자 정의 컨트롤에는 이미지가 포함되어 선택할 수 있습니다.

안드로이드/플렉스/iOS에서 이것은 목록 어댑터, 목록 항목 렌더러 등으로 사소한 일입니다. 그러나 Win 양식에서는 실제로 매우 까다로워 보입니다.

ObjectListView에서 뷰 모드를 Tile로 설정합니다. 그러나 수평으로 렌더링하는 방법이없는 것처럼 보입니다.

사용자 정의 컨트롤을 사용하여 흐름 레이아웃을 채우려고했습니다. 그러나 메모리 사용량은 사진을로드 할 때 지붕을 통과합니다.

+0

나는 다른 해결책이있을 것이라고 확신하지만, 과거에는'DataGridView'를 사용하여 이것을 구현했으며 그 결과에 만족했습니다. – Rotem

+0

그냥 던지기 : WPF. 그것도 사소한 일이며 IMO는 단순히 이러한 것들을위한 최상의 것입니다 (Content 컨셉 덕분에). WinForms 대신 사용할 수 있는지 확인하십시오. – MasterMastic

+0

이미 Win Forms에 의존하고있는 상당량의 신청서가 있습니다. 그것에 의존하는 VLC 미디어 플레이어 래퍼를 포함합니다. 그래서 WPF는 불행하게도 !! –

답변

1

FlowLayoutPanel 컨테이너 컨트롤을 사용하고 WrapContents를 false로 설정하고 FlowDirection을 LeftToRight (기본값)로 설정할 수 있습니다. ... 및 아마도 AutoScroll을 true로 설정하십시오. 메모리의 외출에 관해서는


편집

는 스크롤 이벤트를 처리하고 생성/필요에 따라 컨트롤을 배치함으로써 가상화를 시뮬레이션 생각합니다.

+0

질문에서 마지막 문장을 다시 읽으십시오 ;-) –

+0

errr ... 그게 당황 스럽네요. 나의 관심 부족. – Dev

0

직접 이미지를 그리려면 Control에서 자신의 이미지 컨트롤을 가져오고 OnPaint을 무시하십시오. 그림의 경로 나 이름에 대한 속성을 추가하지만 이미지 자체는 컨트롤에 저장하지 마십시오. Google의 custom control c#

이미지 캐시를 사용하십시오. 좋은 데이터 구조는 circular buffer입니다. 이것은 메모리에있는 이미지의 수를 제한하는 데 도움이됩니다.

관련 문제