來源:http://www.cnblogs.com/wolf-sun/p/3480104.html
在做winform項目中,數據控件DataGridView的使用多多少少是會用到的,如果不設置它的屬性,默認情況下是不會自適應寬度的,你想查看某項的數據,就不得不將標題欄拖來拖去,挺煩的。
結果
沒設置自適應列寬的
使用自適應列寬的
185 /// <summary> 186 /// 使DataGridView的列自適應寬度 187 /// </summary> 188 /// <param name="dgViewFiles"></param> 189 private void AutoSizeColumn(DataGridView dgViewFiles) 190 { 191 int width = 0; 192 //使列自使用寬度 193 //對於DataGridView的每一個列都調整 194 for (int i = 0; i < dgViewFiles.Columns.Count; i++) 195 { 196 //將每一列都調整為自動適應模式 197 dgViewFiles.AutoResizeColumn(i, DataGridViewAutoSizeColumnMode.AllCells); 198 //記錄整個DataGridView的寬度 199 width += dgViewFiles.Columns[i].Width; 200 } 201 //判斷調整后的寬度與原來設定的寬度的關系,如果是調整后的寬度大於原來設定的寬度, 202 //則將DataGridView的列自動調整模式設置為顯示的列即可, 203 //如果是小於原來設定的寬度,將模式改為填充。 204 if (width > dgViewFiles.Size.Width) 205 { 206 dgViewFiles.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; 207 } 208 else 209 { 210 dgViewFiles.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; 211 } 212 //凍結某列 從左開始 0,1,2 213 dgViewFiles.Columns[1].Frozen = true; 214 }
調用:
//調整列寬 AutoSizeColumn(dgViewFiles);
代碼中有用到通過反射屬性來獲取特殊名稱來綁定DataGridView
http://www.cnblogs.com/wolf-sun/p/3854262.html

/// <summary> 161 /// 窗體加載 162 /// </summary> 163 /// <param name="sender"></param> 164 /// <param name="e"></param> 165 private void MainForm_Load(object sender, EventArgs e) 166 { 167 //通過反射的方式添加列 168 Type type = typeof(FileMessage); 169 PropertyInfo[] propertyInfos = type.GetProperties(); 170 foreach (PropertyInfo propertyInfo in propertyInfos) 171 { 172 object[] objs = propertyInfo.GetCustomAttributes(typeof(DescriptionAttribute), true); 173 if (objs.Length > 0) 174 { 175 DescriptionAttribute attr = objs[0] as DescriptionAttribute; 176 string result = attr.Description; 177 this.dgViewFiles.Columns.Add(result, result); 178 } 179 } 180 //調整列寬 181 AutoSizeColumn(dgViewFiles); 182 183 184 }

/// <summary> 11 /// 文件信息 12 /// </summary> 13 public class FileMessage 14 { 15 /// <summary> 16 /// 序號 17 /// </summary> 18 [Description("序號")] 19 public int intCount { get; set; } 20 /// <summary> 21 /// 文件路徑 22 /// </summary> 23 [Description("文件路徑")] 24 public string strFilePath { set; get; } 25 /// <summary> 26 /// 文件名 27 /// </summary> 28 [Description("文件名")] 29 public string strFileName { set; get; } 30 /// <summary> 31 /// 文件類型 32 /// </summary> 33 [Description("文件類型")] 34 public string strFileType { set; get; } 35 }