이 문서에서는 일반적으로 사용되는 컨트롤의 지연 로딩 구현을 간략하게 설명합니다.
1. 인터페이스가 처음 표시될 때 데이터를 로드합니다. 가장 간단한 지연 로딩은 컨트롤이 처음 표시될 때 데이터를 로드하는 것입니다. 예를 들어 탭이 많은 경우 사용자가 이 탭으로 전환할 때만 데이터가 로드됩니다. 꼬리표.
SetVisibleCore 가상 메소드는 .NET Control에서 제공됩니다. 감지된 값이 true이고 이 메소드가 처음 호출되면 지연 로딩이 호출됩니다. 하지만 더 나은 장소가 있기 때문에 이 방법을 권장하지 않습니다.
- 컨트롤이 Form 또는 UserControl에서 상속되는 경우 OnLoad를 오버로드하는 것이 좋습니다.
- Control에서 상속받은 경우 OnCreateControl이 오버로드될 수 있습니다.
다음은 데이터 지연 로딩의 예입니다.
공개 클래스 MyTabPage : TabPage {
보호된 재정의 void OnCreateControl() {
base.OnCreateControl();
string oldText = this.Text;
this.Text = "Loading..";
//TODO: 여기에서 데이터를 로드하는 메서드를 호출합니다.
this.Text = oldText;
}
}
2. 처음 확장 시 트리 컨트롤이 로드됩니다.
TreeView의 모든 노드는 Control에서 상속되지 않기 때문에 위의 방법을 사용할 수 없습니다. 그러나 TreeView는 OnBeforeExpand 가상 방법을 제공합니다. 첫 번째 확장에서는 이 표시를 감지합니다.
지연 로딩 노드는 루트 위치에서 이 이벤트를 수신할 수 없다는 점을 기억해야 합니다.
3. 테이블의 지연 로딩.
Windows 프로그램에서 일부는 페이징을 사용하여 지연 로딩을 구현하지만 이 방법의 사용자 경험은 매우 나쁩니다. 여전히 스크롤 막대를 사용하려면 내부적으로 데이터 ID 목록을 보유하는 IBindList 인터페이스를 직접 구현할 수 있습니다. 양식에서 데이터를 요청하면 공통 테이블 컨트롤이 잘 작동할 수 있습니다.
그러나 여기서 주의해야 할 사항이 있습니다. 예를 들어 사용자가 PageDown을 누르면 테이블 컨트롤이 요청마다 데이터베이스를 호출하면 프로그램 성능이 매우 낮아집니다. 예측"으로 50개의 데이터를 읽어야 할 수도 있으므로 한 번에 50개를 더 읽을 수 있습니다.
이 방법은 테이블 정렬과 관련하여 해결책이 없습니다.
위 내용은 지연 로딩 기술의 일반적인 기술입니다. 더 나은 방법이 있으면 알려주시기 바랍니다.