Winform datagrid技巧

来源:互联网 发布:守望先锋网络初始化失 编辑:程序博客网 时间:2024/06/05 19:12

1、指定宽度:

{    //为了返回指定宽度的列
           DataGridTableStyle tableStyle = new DataGridTableStyle();
           tableStyle.MappingName =Tablename;//adapter.Fill(ds,Tablename);需要有映射先对应
           dataGrid1.TableStyles.Clear();
           dataGrid1.TableStyles.Add(tableStyle);
           SetSizeTable();
           this.dataGrid1.DataSource = ds.Tables[Tablename];

}

#region 列定义
/// <summary>
/// 设置列的尺寸
/// </summary>
public void SetSizeTable()
{
    int numCols = ds.Tables[0].Columns.Count;
    for (int i = 0; i < numCols; ++i)
        AutoSizeCol(i, numCols);
}
public void AutoSizeCol(int col, int numCols)
{ /*手机上需要增加一下:

          System.Windows.Forms.DataGridColumnStyle myColStyle = new DataGridTextBoxColumn();
          myColStyle.MappingName = ds.Tables[0].Columns[col].ColumnName;
         myColStyle.Width = 100;
          myColStyle.HeaderText = ds.Tables[0].Columns[col].ColumnName;
          dataGrid1.TableStyles[ds.Tables[0].TableName].GridColumnStyles.Add(myColStyle); 

*/

    dataGrid1.TableStyles[Tablename].GridColumnStyles[col].Width = (int)(240 / numCols);
}

public 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["customers"].GridColumnStyles[col].Width = (int) width;
    }

#endregion

原创粉丝点击