Cet article décrit brièvement l'implémentation du chargement différé dans les contrôles couramment utilisés.
1. Chargez les données lors du premier affichage de l'interface. Le chargement paresseux le plus simple peut charger les données lorsque le contrôle est affiché pour la première fois. Par exemple, si vous avez plusieurs onglets, les données ne seront chargées que lorsque l'utilisateur basculera sur celui-ci. languette.
La méthode virtuelle SetVisibleCore est fournie dans .NET Control Lorsque la valeur détectée est vraie et que cette méthode est appelée pour la première fois, un chargement différé est appelé. Mais je ne recommande pas cette méthode car vous avez de meilleurs endroits.
- Si votre contrôle hérite de Form ou UserControl, il est recommandé de surcharger OnLoad ;
- S'il est hérité de Control, OnCreateControl peut être surchargé.
Voici un exemple de chargement paresseux de données :
classe publique MyTabPage : TabPage {
remplacement protégé void OnCreateControl() {
base.OnCreateControl();
chaîne oldText = this.Text;
this.Text = "Chargement..";
//TODO : Appelez ici la méthode de chargement des données
this.Text = oldText;
}
}
2. Le contrôle d'arborescence est chargé lorsqu'il est développé pour la première fois.
Étant donné que tous les nœuds de TreeView n'héritent pas de Control, vous ne pouvez pas utiliser la méthode ci-dessus. Cependant, TreeView fournit la méthode virtuelle OnBeforeExpand. Le moyen le plus simple consiste à ajouter une marque chargée au nœud que vous prévoyez d'implémenter lors du premier chargement. à la première expansion, détectez cette marque.
Vous devez vous rappeler que votre nœud de chargement différé ne peut pas recevoir cet événement à l'emplacement racine.
3. Chargement paresseux dans les tables.
Dans les programmes Windows, certains utilisent la pagination pour implémenter le chargement paresseux, mais l'expérience utilisateur de cette méthode est très mauvaise. Si vous souhaitez toujours utiliser les barres de défilement, vous pouvez implémenter vous-même l'interface IBindList, qui contient une liste d'ID de données en interne. Lorsque le formulaire demande des données, il charge les données dans la base de données.
Mais il y a quelque chose à noter ici. Par exemple, lorsque l'utilisateur appuie sur PageDown, le contrôle de table appelle en permanence la méthode d'acquisition de données. Si la base de données est appelée à chaque requête, les performances seront très faibles. prédit" à Vous devrez peut-être lire 50 éléments de données, afin de pouvoir lire 50 éléments supplémentaires à la fois.
Cette méthode n’a pas de solution en matière de tri des tables.
Ce qui précède sont les techniques générales de la technologie de chargement paresseux. Si vous avez une meilleure méthode, veuillez m'éclairer.