百度空间 | 百度首页 
 
查看文章
 
重绘.net Compact Framework下的DataGrid单元格样式(终极方案)
2009-02-27 14:13

.net Compact Framework下的DataGrid来说,功能真的有限,不过想想也对,必竟Mobile设备的性能有限。如果对DataGrid有特殊需求的话,比方说要设置根据条件设置某行或某个单元格的字体、字体颜色、背景色等,那就只有自己想办法了,下面的代码是关于如何重新绘制单元格的样式,只要有行和列的序号就可以了。

   #region DrawGridCell

   /// <summary>
   ///
   /// </summary>
   /// <param name="grid"></param>
   /// <returns></returns>
   public static int GetFirstVisibleRow(System.Windows.Forms.DataGrid grid)
   {
    int result = 0;
    try
    {
     result = Convert.ToInt32(typeof(System.Windows.Forms.DataGrid).GetField("m_irowVisibleFirst",
      BindingFlags.NonPublic|BindingFlags.GetField
      |BindingFlags.Instance).GetValue(grid));
    }
    catch
    {
    }
    return result;
}
   /// <summary>
   ///
   /// </summary>
   /// <param name="grid"></param>
   /// <param name="irow"></param>
   /// <param name="icol"></param>
   /// <param name="font"></param>
   /// <param name="foreColor"></param>
   /// <param name="backColor"></param>
   public static void DrawGridCell(System.Windows.Forms.DataGrid grid,int irow,int icol,System.Drawing.Font font,System.Drawing.Color foreColor,System.Drawing.Color backColor)
   {
    System.Drawing.Graphics g = grid.CreateGraphics();
    System.Drawing.Rectangle rect = grid.GetCellBounds(irow,icol);
    g.FillRectangle(new SolidBrush(backColor),rect);
    g.DrawString(grid[irow,icol].ToString(),font,new SolidBrush(foreColor),rect);
   }


   /// <summary>
   ///
   /// </summary>
   /// <param name="grid"></param>
   /// <param name="irow"></param>
   /// <param name="icol"></param>
   /// <param name="font"></param>
   /// <param name="foreColor"></param>
   public static void DrawGridCell(System.Windows.Forms.DataGrid grid,int irow,int icol,System.Drawing.Font font,System.Drawing.Color foreColor)
   {
    DrawGridCell(grid,irow,icol,font,foreColor,grid.BackColor);
   }


   /// <summary>
   ///
   /// </summary>
   /// <param name="grid"></param>
   /// <param name="irow"></param>
   /// <param name="icol"></param>
   /// <param name="font"></param>
   public static void DrawGridCell(System.Windows.Forms.DataGrid grid,int irow,int icol,System.Drawing.Font font)
   {
    DrawGridCell(grid,irow,icol,font,grid.ForeColor,grid.BackColor);
   }

   /// <summary>
   ///
   /// </summary>
   /// <param name="grid"></param>
   /// <param name="irow"></param>
   /// <param name="icol"></param>
   public static void DrawGridCell(System.Windows.Forms.DataGrid grid,int irow,int icol)
   {
    System.Drawing.Rectangle rect = grid.GetCellBounds(irow,icol);
    grid.Invalidate(rect);
   }

   /// <summary>
   ///
   /// </summary>
   /// <param name="grid"></param>
   /// <param name="gridCell"></param>
   /// <param name="font"></param>
   /// <param name="foreColor"></param>
   /// <param name="backColor"></param>
   public static void DrawGridCell(System.Windows.Forms.DataGrid grid,System.Windows.Forms.DataGridCell gridCell,System.Drawing.Font font,System.Drawing.Color foreColor,System.Drawing.Color backColor)
   {
    DrawGridCell(grid,gridCell.RowNumber,gridCell.ColumnNumber,font,foreColor,backColor);
   }

   /// <summary>
   ///
   /// </summary>
   /// <param name="grid"></param>
   /// <param name="gridCell"></param>
   /// <param name="font"></param>
   /// <param name="foreColor"></param>
   public static void DrawGridCell(System.Windows.Forms.DataGrid grid,System.Windows.Forms.DataGridCell gridCell,System.Drawing.Font font,System.Drawing.Color foreColor)
   {
    DrawGridCell(grid,gridCell.RowNumber,gridCell.ColumnNumber,font,foreColor,grid.BackColor);
   }

   /// <summary>
   ///
   /// </summary>
   /// <param name="grid"></param>
   /// <param name="gridCell"></param>
   /// <param name="font"></param>
   public static void DrawGridCell(System.Windows.Forms.DataGrid grid,System.Windows.Forms.DataGridCell gridCell,System.Drawing.Font font)
   {
    DrawGridCell(grid,gridCell.RowNumber,gridCell.ColumnNumber,font,grid.ForeColor,grid.BackColor);
   }

   /// <summary>
   ///
   /// </summary>
   /// <param name="grid"></param>
   /// <param name="gridCell"></param>
   public static void DrawGridCell(System.Windows.Forms.DataGrid grid,System.Windows.Forms.DataGridCell gridCell)
   {
    DrawGridCell(grid,gridCell.RowNumber,gridCell.ColumnNumber);
   }

   #endregion


类别:Win Ce | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu