В этой статье кратко описывается реализация отложенной загрузки в часто используемых элементах управления.
1. Загрузите данные при первом отображении интерфейса. Простейшая отложенная загрузка может загружать данные при первом отображении элемента управления. Например, если у вас много вкладок, данные будут загружаться только тогда, когда пользователь переключится на нее. вкладка.
Виртуальный метод SetVisibleCore предоставляется в .NET Control. Если обнаруженное значение истинно и этот метод вызывается в первый раз, вызывается отложенная загрузка. Но я не рекомендую этот метод, потому что у вас есть места получше.
— Если ваш элемент управления наследуется от Form или UserControl, рекомендуется перегрузить OnLoad;
— Если OnCreateControl унаследован от Control, его можно перегрузить.
Вот пример отложенной загрузки данных:
общественный класс MyTabPage: TabPage {
защищенное переопределение void OnCreateControl() {
base.OnCreateControl();
строка oldText = this.Text;
this.Text = "Загрузка..";
//TODO: вызвать здесь метод загрузки данных
this.Text = oldText;
}
}
2. Элемент управления «Дерево» загружается при первом раскрытии.
Поскольку все узлы в TreeView не наследуются от Control, вы не можете использовать описанный выше метод. Однако TreeView предоставляет виртуальный метод OnBeforeExpand. Самый простой способ — добавить метку загрузки к узлу, который вы планируете реализовать отложенную загрузку. первое расширение, обнаружите эту отметку.
Вы должны помнить, что ваш узел отложенной загрузки не может получить это событие в корневом расположении.
3. Ленивая загрузка таблиц.
В программах Windows некоторые используют подкачку для реализации отложенной загрузки, но пользовательский опыт этого метода очень плох. Если вы по-прежнему хотите использовать полосы прокрутки, вы можете самостоятельно реализовать интерфейс IBindList, который содержит внутренний список идентификаторов данных. Когда форма запрашивает данные, она загружает данные в базу данных. Общие табличные элементы управления могут работать хорошо.
Но здесь следует отметить кое-что. Например, когда пользователь нажимает PageDown, табличный элемент управления постоянно вызывает метод сбора данных. Если база данных будет вызываться для каждого запроса, производительность будет очень низкой. предсказано» на Возможно, вам придется прочитать 50 фрагментов данных, чтобы вы могли прочитать еще 50 фрагментов одновременно.
Этот метод не имеет решения, когда дело касается сортировки таблиц.
Выше приведены общие методы технологии отложенной загрузки. Если у вас есть лучший метод, просветите меня.