응용 프로그램이 시작될 때 45 개의 폼을 인스턴스화하는 경로는 사용하지 않을 것입니다. 이렇게하면 시작 시간이 심각하게 길어지며 아마도 메모리 리소스가 소모되는 것은 아닙니다. 사용자가 필요로하지 않을 수도있는 기능을 모두 제공 할 수 있습니다.
내 WinMo 응용 프로그램에서 각 양식은 상대적으로 작은 데이터 하위 집합에서 작동하도록 설계되었으므로 시작 시간은 데이터베이스 호출과 양식 컨트롤에 데이터로드로 제한됩니다. 일반적으로 이러한 양식 중 하나를 인스턴스화하고 표시하는 데 필요한 시간은 결코 두 번째 또는 두 번째입니다.
양식을 표시하는 데 시간이 오래 걸리는 경우 데이터 검색 또는 데이터가 양식의 컨트롤에로드되는 방식에 문제가있을 수 있습니다 (예 : 전체를 렌더링하는 맞춤형 그리드보기 컨트롤이있을 수 있습니다. 한 번에 12 개만 표시 되더라도 300 개의 행). 데이터가 너무 커서 검색하는 데 시간이 오래 걸리는 경우 사용자가 실제적으로 상호 작용할 수있는 것보다 훨씬 많은 데이터가 발생할 가능성이 있습니다.
사용자가 이동해야하는 위치를 얻으려는 "5 섹션"에 대한 언급으로 5 레벨을 무언가로 "최대 드릴링"할 수 있습니다. 각 양식을 구체화하여 구체화하고 ShowDialog
을 사용하여 다음 양식을 표시하는 경우 한 번에 최대 5-6 개의 양식이 존재하게되며 이는 .Net CF 응용 프로그램에 문제가되지 않습니다. 항상). 이렇게하면 언제 어디서나 양식을 열 때 추적 할 양식을 추적 할 수있는 특별한 작업을 수행 할 필요가 없으며 양식이 닫히면 자동으로 호출 양식으로 돌아갑니다.
처리해야하는 z-order/task manager 이상한 점이 있지만 특별히 복잡하지는 않습니다. 자식 폼에 ShowDialog
을 호출하기 전에 부모 폼의 Text
속성을 빈 문자열로 설정 한 다음 ShowDialog
이 반환 된 후 폼의 원래 캡션으로 다시 설정합니다. 이것은 꼭 필요한 것은 아니지만 Windows Mobile (적어도 버전 6까지)에서 열려있는 모든 .Net 양식 (비어 있지 않은 Text 속성 포함)은 모두 실행 프로그램 목록에 표시됩니다 (모두 동일하더라도). 신청. 필자는 일반적으로 하나의 프로그램처럼 보이는 다중 형식 응용 프로그램을 선호하므로 일반적으로 모든 양식의 Text
을 응용 프로그램의 이름으로 설정합니다.
또한 모든 UI 부분을 양식 대신 UserControl으로 구현 한 단일 양식 응용 프로그램을 실험 한 다음 양식을 만들고 여는 것처럼 컨트롤을 만들고 쌓습니다. 이것은 작동하지만 해킹이며 권장하지 않습니다. 폼에는 Load 이벤트가 있고 UserControls에는없는 것이 주된 문제입니다.
아,하지만 UserControls 주변의 프레임 워크를 사용하면 자신의 Load 이벤트를 만들게됩니다. – ctacke
Bah, 더 이상 * 컨트롤 *을 사용하지 않습니다. 화면에 'BitBlt'만 있습니다. :) – MusiGenesis
아, 난보기 47 UserControls 한 양식이 있습니다. 그러나 재미있는 점은 모든 뷰에 * 모든 UI 요소를 표시하는 데 사용되는 단일 사용자 정의 컨트롤이 있다는 것입니다. 기본적으로 필요한 알파 블렌딩을 얻으려면 필자는 "swiss army knife"컨트롤을 만들고, 사용자 정의 페인팅과 혼합하고 도구 상자에있는 모든 것을 버렸다. CF 개발의 즐거움. – ctacke