문제

Winforms 응용 프로그램이 있습니다. 아이콘이 많은 사용자 컨트롤이 있습니다. 사용자는이 컨트롤을 양식에 여러 번로드 할 수 있습니다 (탭 레이아웃에서). 지금은 컨트롤이 생성 될 때마다 아이콘을로드하고 있습니다 (TEH 앱에서 최대 50 회). 응용 프로그램에서 이러한 아이콘을 캐시하는 방법이 있습니까? 내가이 일을했다면, 이것이 문제가 될 때 내가 사용하는 GDI 핸들의 수가 줄어들 것입니다.

도움이 되었습니까?

해결책

각 아이콘에 대해 싱글 톤 클래스를 만들 수 있습니다. 첫 번째 참조는 손잡이를 만듭니다. 후속 통화는 기존 핸들을 사용합니다.

사용자 제어에 대해 더 많이 알지 못하고 다음 제안은 매우 일반적 일 수 있습니다. 그러나 모든 아이콘을 그리는 단일 비트 맵 레이어가있을 수 있습니다. 사용자 컨트롤의 나머지 요소는이 비트 맵 위와 주변에 존재합니다.

불행히도이 아이디어는 문제가되는 성능이 현명 할 수 있습니다. 아이콘을 정렬하기 위해 준비한 코드를 리팩터링해야합니다. 마지막으로 제어 형식 구조를 가진 프레임 워크가 이상적으로 작동하는 방식과는 거리가 멀다.

우리는 CAM 소프트웨어를 사용하여 배송되는 매개 변수 모양에 대한 입력 양식으로 리소스 문제를 해결했습니다. 너무 많은 텍스트 항목으로 인해 다양한 형태의 이상한 이상함과 누출이 발생했습니다. 그래서 우리는 대신 텍스트 항목처럼 보이고 하나의 텍스트 항목 (및 콤보 상자 항목)이있는 테두리가있는 레이블을 만들었습니다. 사용자 탭이 들어가거나 들어가거나 클릭하면 단일 텍스트 항목이 새 항목으로 이동하고 이전 항목에 대한 레이블이 설정되었습니다.

이것은 일반적으로 코딩하는 방식보다 직관적이지 않은 설정이지만 자원 문제를 처리하는 유일한 방법이었습니다.

내 경험상 GUI 프레임 워크는 수십 또는 수백 개의 항목을 처리해야 할 때 문제가 있고 다른 디자인을 사용하여 문제에 접근 해야하는 것으로 보입니다.

다른 팁

문제가 "아이콘"수 (여기서 의미하는 바를 확실하지 않음) 인 경우 이미지 목록을 사용할 수 있습니다. 예를 들어, ListView Control은 각 항목에 대한 전체 사본을 유지하는 대신 이미지 목록에서 아이콘을 참조 할 수 있습니다 (케이스에 적용되는지 확실하지 않음).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top