天天@BLOG

脖子越来越疼,脑袋越来越钝
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DataGrid中自动设置列宽

Posted on 2006-01-11 14:11  天天在线  阅读(1621)  评论(2)    收藏  举报

dataGrid1.TableStyles["A"].GridColumnStyles[col].Width = width;

下面是一个自动设值列宽的函数,可以参考一下:
/// autosize the first column
/// </summary>
/// <param name="col">column number</param>
private void AutoSizeCol(int col)
{
float width = 0;
int numRows = ((DataTable) dataGrid1.DataSource).Rows.Count;
Graphics g = Graphics.FromHwnd(dataGrid1.Handle);
StringFormat sf = new StringFormat(StringFormat.GenericTypographic);
SizeF size;
for(int i = 0; i < numRows; ++ i)
{
size = g.MeasureString(dataGrid1[i, col].ToString(), dataGrid1.Font, 500, sf);
if(size.Width > width)
width = size.Width;
}

g.Dispose();
dataGrid1.TableStyles["A"].GridColumnStyles[col].Width = (int) width + 16;
}

@忙碌,不代表有效率;方法,远胜于苦干