欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

WinForm的延時加載控件概述

 更新時間:2014年08月27日 09:44:40   投稿:shichen2014  
這篇文章主要介紹了WinForm的延時加載控件,很實用的技巧,在C#程序設(shè)計中有著比較廣泛的應(yīng)用,需要的朋友可以參考下

本文主要針對WinForm的延遲加載在常用控件的實現(xiàn)做簡單的描述。在進(jìn)行C#項目開發(fā)的時候具有一定的實用性。具體如下:

一、在界面第一次顯示時加載。最簡單的延遲加載可以通過控件第一次顯示時加載數(shù)據(jù),例如你有很多的頁簽,只有用戶切換到這個頁簽時,才會加載數(shù)據(jù)。
在.NET的Control中提供SetVisibleCore虛方法,當(dāng)檢測value是true且第一次調(diào)用此方法時,調(diào)用延遲加載。但是并不推薦這個方法,因為你有更好的地方。
①.如果你的控件繼承自Form或者UserControl,建議重載OnLoad;
②.如果繼承自Control,可以重載OnCreateControl。
下面是延遲加載數(shù)據(jù)的例子:

  public class MyTabPage : TabPage {
    PRotected override void OnCreateControl() {
      base.OnCreateControl();

    string oldText = this.Text;
      this.Text = "Loading..";

    //TODO:在這里調(diào)用加載數(shù)據(jù)的方法

    this.Text = oldText;
    }
  }

二、樹控件在第一次展開時加載。TreeView因為所有的節(jié)點并不是繼承自Control,所以不能使用上面的方式,但是TreeView提供了OnBeforeExpand虛方法,最簡單的辦法是在你打算實現(xiàn)延遲加載的節(jié)點加入一個是否已經(jīng)加載的標(biāo)記,當(dāng)?shù)谝淮握归_時,檢測這個標(biāo)記。 必須記住你的延遲加載節(jié)點在根位置是不能收到這個事件的。

三、在表格中延遲加載。在Windows程序中,有的使用分頁的方式實現(xiàn)延遲加載,但這種方式的用戶體驗非常的糟糕。如果你希望仍然使用滾動條的話,可以自己實現(xiàn)IBindList接口,內(nèi)部持有一個數(shù)據(jù)的ID列表,在表格詢問數(shù)據(jù)時,才到數(shù)據(jù)庫加載數(shù)據(jù),通常的表格控件都能夠很好的工作。 但這里有個應(yīng)該注意的地方,例如用戶按下PageDown時,表格控件連續(xù)的調(diào)用獲取數(shù)據(jù)方法,如果每次請求都去調(diào)用數(shù)據(jù)庫,將會很低的性能,應(yīng)該讓你的程序“預(yù)知”到可能要讀下50筆數(shù)據(jù)了,所以一次性多讀50條就可以。
這種方法遇到表格排序的時候就沒有辦法了。

希望本文所述對大家的C#程序設(shè)計有所幫助

相關(guān)文章

最新評論