.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