http://community.csdn.net/Expert/topic/3434/3434227.xml?temp=.493664

解决方案 »

  1.   

    /// <summary>
    /// 返回指定列的最适合宽度
    /// </summary>
    /// <param name="pColumn">一个列</param>
    /// <param name="headerCaption">列的标题字符,如果不计算标题字符的宽度,则传入空字符</param>
    /// <param name="MaxLimit">最宽限制为,缺省为1000</param>
    /// <returns>列的最适合宽度</returns>
    public int GetFitWidth(DataColumn pColumn,string headerCaption ,int MaxLimit)
    {
    int widest = 0,maxlimit=MaxLimit; System.Drawing.Graphics g =this.CreateGraphics();
    System.Drawing.SizeF stringSize =  g.MeasureString(headerCaption, Font);
    widest=(int)stringSize.Width ;

    foreach (System.Data.DataRow  drv in pColumn.Table.Rows  )
    {
    string _itemValue=drv[pColumn].ToString ();
    stringSize =  g.MeasureString(_itemValue, Font);
    if (stringSize.Width > widest) 
    {
    widest = (int)Math.Ceiling(stringSize.Width);
    }
    }
    return System.Math.Min ( widest + 10,maxlimit);
    }