この記事では、一般的に使用されるコントロールでの遅延読み込みの実装について簡単に説明します。
1. インターフェイスが最初に表示されるときにデータをロードします。たとえば、コントロールが初めて表示されるときにデータをロードできます。たとえば、多くのタブがある場合、データはユーザーがこれに切り替えたときにのみロードされます。タブ。
SetVisibleCore 仮想メソッドは .NET コントロールで提供されており、検出された値が true でこのメソッドが初めて呼び出されるとき、遅延読み込みが呼び出されます。ただし、もっと良い場所があるので、この方法はお勧めしません。
- コントロールが Form または UserControl から継承している場合は、OnLoad をオーバーロードすることをお勧めします。
- Control から継承した場合、OnCreateControl をオーバーロードできます。
データの遅延ロードの例を次に示します。
パブリック クラス MyTabPage : TabPage {
protected オーバーライド void OnCreateControl() {
文字
列oldText = this.Text;
this.Text = "Loading..";
//TODO: ここでデータをロードするメソッドを呼び出します。
this.Text = oldText;
}
}
2. ツリー コントロールは、初めて展開されるときにロードされます。
TreeView のすべてのノードは Control を継承していないため、上記のメソッドを使用することはできません。ただし、TreeView では、最初の遅延読み込み時に、ロード済みマークをノードに追加することができます。最初の展開では、このマークを検出します。
遅延読み込みノードはルートの場所ではこのイベントを受信できないことに注意してください。
3. テーブルへの遅延読み込み。
Windows プログラムでは、ページングを使用して遅延読み込みを実装するものもありますが、この方法のユーザー エクスペリエンスは非常に悪いです。それでもスクロール バーを使用したい場合は、内部的にデータ ID のリストを保持する IBindList インターフェイスを実装することができ、フォームがデータを要求すると、そのデータがデータベースに読み込まれます。
ただし、ここで注意すべき点があります。たとえば、ユーザーが PageDown を押したときに、テーブル コントロールがリクエストごとにデータベースを呼び出すと、パフォーマンスが非常に低下します。 50 個のデータを読み取る必要がある場合があるため、さらに 50 個を一度に読み取ることができます。
テーブルの並べ替えに関しては、この方法では解決策がありません。
上記は遅延読み込みテクノロジーの一般的なテクニックです。より良い方法があれば、ご教示ください。