人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

顯示DataGrid序號的一個適用的辦法

顯示DataGrid序號的一個適用的辦法

更新時間:2022-06-07 文章作者:未知 信息來源:網絡 閱讀次數:

我在網上查了好幾個例子,如果數據量小的話沒有問題,一旦數據量大,顯示特別慢,還有個缺點就是拖動行高時行號不隨行高的變化而變動,出現是幾個序號在一個單元格中顯示。我自己對他們的算法進行總結,寫出一個效果比較不錯的帶序號的DataGrid。原理:只顯示表格中顯示行的序號,并且拖動行,行號一起移動。

override protected void OnPaint(PaintEventArgs e)

{

base.OnPaint(e);

try

{

if(this.DataSource!=null)

{

int yDelta;

System.Drawing .Rectangle cell=this.GetCellBounds(0,0);

int y=cell.Top +2;

e.Graphics.DrawString("編號", this.Font, new SolidBrush(Color.Black), 8, y-18); //

if(this.VisibleRowCount >0)//只在有記錄集時在表格中顯示序號

{

CurrencyManager cm;

cm = (CurrencyManager) this.BindingContext[this.DataSource, this.DataMember];

if(cm.Count >0)

{

int nRow=-1;

y=41; //為第一行默認高度

while(nRow<0)

{

nRow=this.HitTest (8,y).Row ;

y++;

}

int nCount=0;

while(y<this.Height && nCount<this.VisibleRowCount )

{

string text = string.Format("{0}", nRow+nCount+1);

e.Graphics.DrawString(text, this.Font, new SolidBrush(Color.Black), 10, y);

yDelta = this.GetCellBounds( nRow+nCount,0).Height + 1;//****表示一行高度的參數

y += yDelta;

//如果下面有子行顯示序號的區分顯示

if(this.IsExpanded (nRow+nCount)&& nRow+nCount+1<cm.Count ) {

y+=this.GetCellBounds (nRow+nCount+1,0).Height +3;

}

nCount++;

}

}

}

}

}

catch

{}

}

重載了DataGrid中的Paint,這樣用起來會特別方便,區區雕蟲小技,希望和大家共同分享。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 嘉荫县| 天水市| 潮安县| 丰县| 黔江区| 张家界市| 旌德县| 田东县| 平远县| 北安市| 乐都县| 竹北市| 普兰县| 台州市| 达日县| 金湖县| 镇原县| 北宁市| 西平县| 津南区| 玉林市| 尼勒克县| 滨海县| 凌云县| 类乌齐县| 深水埗区| 曲阜市| 九寨沟县| 开原市| 涞源县| 南皮县| 天镇县| 张掖市| 金昌市| 东乡县| 安阳市| 大兴区| 曲靖市| 新安县| 昔阳县| 绵竹市|