/// <summary> /// 使列宽等于该列最长单元格长,可设置列显示或隐藏 /// </summary> /// <param name="dg"></param> /// <param name="Len">为0表示显示,为1表示隐藏</param> public static void SetStyle(DataGrid dg, params int[] Len) { if (dg.DataSource == null) { return; } DataTable dt; switch (dg.DataSource.GetType().ToString()) { case "System.Data.DataSet": dt = ((DataSet)dg.DataSource).Tables[dg.DataMember]; break; case "System.Data.DataView": dt = ((DataView)dg.DataSource).Table; break; case "System.Data.DataTable": dt = (DataTable)dg.DataSource; break; default: dt = (DataTable)dg.DataSource; break; } DataGridTableStyle style = new DataGridTableStyle(); style.MappingName = dg.DataSource.ToString(); style.AlternatingBackColor = System.Drawing.Color.FromArgb(((System.Byte)(192)), ((System.Byte)(192)), ((System.Byte)(255))); style.BackColor = System.Drawing.SystemColors.Info; style.GridLineColor = System.Drawing.SystemColors.HotTrack; style.SelectionBackColor = Color.Red; ColumnInfo[] mColumnInfo = new ColumnInfo[dt.Columns.Count]; for (int i = 0; i < dt.Columns.Count; i++) { ColumnInfo ci = new ColumnInfo(); ci.Name = dt.Columns[i].ColumnName; ci.DataType = dt.Columns[i].DataType.ToString(); ci.CompareStringLength(ci.Name); mColumnInfo[i] = ci; } foreach (DataRow dr in dt.Rows) { for (int i = 0; i < dt.Columns.Count; i++) { if (!dr.IsNull(i)) { mColumnInfo[i].CompareStringLength(dr[i].ToString()); } } } DataGridColumnStyle col; for (int i = 0; i < dt.Columns.Count; i++) { if (dt.Columns[i].DataType.FullName == "System.Boolean") { col = new DataGridBoolColumn(); } else { col = new DataGridTextBoxColumn(); } col.MappingName = mColumnInfo[i].Name; col.HeaderText = mColumnInfo[i].Name; col.Width = (int)mColumnInfo[i].Width(dg, Len[i]); col.Alignment = HorizontalAlignment.Left; col.NullText = string.Empty; style.GridColumnStyles.Add(col); } dg.TableStyles.Clear(); dg.TableStyles.Add(style); dg.ReadOnly = true; dg.BackgroundColor = Color.White; dg.AllowSorting = true; }