在做winform的程序时,经常遇到不能调节DataGrid列宽的情况,查了不少资料后,写了个函数。希望大家能多多提出改进的意见。谢谢。
public static DataGridTableStyle SetGrid(DataTable Table,string[] WidthArr,string[] HeadText,string[] MapName)

{
if(Table.Columns.Count == WidthArr.Length || Table.Columns.Count == HeadText.Length || Table.Columns.Count == MapName.Length)

{
DataGridTableStyle GridStyle = new DataGridTableStyle();
GridStyle.MappingName = Table.TableName;
for(int i=0;i<Table.Columns.Count;i++)

{
DataGridTextBoxColumn CStyle = new DataGridTextBoxColumn();
CStyle.HeaderText = HeadText[i];
CStyle.MappingName = MapName[i];
CStyle.Width = Convert.ToInt32(WidthArr[i]);
if(Convert.ToInt32(WidthArr[i]) <= 30)

{
CStyle.Alignment = System.Windows.Forms.HorizontalAlignment.Center;
}
else

{
CStyle.Alignment = System.Windows.Forms.HorizontalAlignment.Center;
}
GridStyle.GridColumnStyles.Add(CStyle);
}
return GridStyle;
}
else

{
return null;
}
}
用法:
this.libData.DataSource = Table;
string[] WidthArr = {"20","80","100","100","0"};
string[] HeadArr = {"","PK","ZD","KD","ID"};
string[] MapArr = {"ID","PK","ZD","KD","OID"};
DataGridTableStyle st1 = GridStyle.SetGrid(Table,WidthArr,HeadArr,MapArr);