来源: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 }