程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅第六講 C#圖形開發中級篇(4)

C#發現之旅第六講 C#圖形開發中級篇(4)

編輯:關於C語言

RefreshSize

程序使用一個DataTable填充網格文檔後,需要 調用 RefreshSize 進行內容事先排版,為顯示文檔內容做准備。這個方法的代碼為

/// <summary>
/// 計算單元格大小,進行內容排版
/// </summary>
/// <param name="g">計算文本大小使用的圖形 繪制對象</param>
public void RefreshSize( System.Drawing.Graphics g )
{
  ArrayList cells = new ArrayList();
  System.Drawing.Size VIEwSize = Size.Empty ;
  int LeftCount = 0 ;
  for( int iCount = 0 ; iCount < 1000 ; iCount ++ )
  {
    // 遍歷所有的表格列,獲得 指定的列的單元格對象
    // 此處允許最大的表格列有1000列
     cells.Clear();
    for( int RowIndex = 0 ; RowIndex < myDocument.Count ; RowIndex ++ )
    {
      CellRow row = myDocument[ RowIndex ] ;
      if( iCount < row.Count )
       {
        Cell cell = row[ iCount ] ;
        // 設置單元格的位置
        cell.intLeft = LeftCount ;
         cell.intTop = RowIndex * this.RowHeight ;
        cells.Add( cell );
      }
    }
    if( cells.Count == 0 )
      break;
    // 計算當前列的單元格的最大寬度
     int MaxWidth = 40 ;
    foreach( Cell cell in cells )
    {
      string txt = cell.Text ;
      if( txt != null && txt.Length > 0 )
      {
         System.Drawing.SizeF size = g.MeasureString(
          txt ,
          this.Font ,
          1000 ,
           System.Drawing.StringFormat.GenericDefault );
        if( MaxWidth < ( int ) size.Width )
          MaxWidth = ( int ) size.Width ;
      }
    }
    MaxWidth += 10 ;
    // 設置單元格的大小
    foreach( Cell cell in cells )
     {
      cell.intWidth = MaxWidth ;
       cell.intHeight = this.RowHeight ;
      if( cell.Left + cell.Width > VIEwSize.Width )
        VIEwSize.Width = cell.Left + cell.Width ;
      if( cell.Top + cell.Height > VIEwSize.Height )
        VIEwSize.Height = cell.Top + cell.Height ;
    }
    LeftCount += MaxWidth ;
  }
  VIEwSize.Width += 10 ;
  VIEwSize.Height += 10 ;
  if( this.AutoScrollMinSize.Equals( VIEwSize ) == false )
  {
    this.AutoScrollMinSize = VIEwSize ;
    this.Invalidate();
  }
  }//public void RefreshSize( System.Drawing.Graphics g )

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved