DataGridView控件与List集合数据展示
1.DataGridView控件
(1)创建
从工具箱中拖放一个DataGridView控件到窗体中,再将智能标签中的启用都取消掉(很少会用)
(2)背景色修改
设置背景色:BackgroundColor
(3)设置标题列
①添加列
进入DataGridView控件的智能标签,点击编辑列,进入编辑列窗口后点击添加,进入添加列窗口。名称填写要展示集合中实体类的属性,页眉文本是表格中要显示的列标题,填写完成后点击添加即可继续添加列,点击取消可停止添加。
②设置列宽
固定列宽
自动填充(至少将一个列设置为自动列宽,即可占满整个表格的宽)
④设置列名居中
右键打开表格的属性
⑤设置列标题的大小
设置前将EnableHeadersVisualStyle设置为False,否则自定义的列标题和行标题样式不起作用,
再将ColumnHeadersHeigtSize设置为EnableResizing。设置完成之后则可以修改ColumnHeadersHeight改变列标题宽度。
⑥设置列标题边框样式
修改表格的ColumHeadersBorderStyle属性
⑦修改列标题的样式
其中
修改背景色:BackColor
修改字体、字号:Font
修改字体颜色:ForeColor
(4)修改单元格样式
设置分割单元格的网格线条的颜色:GridColor
设置数据行默认的单元格样式:RowsDefaultCellStyle
其中
修改背景色:BackColor
修改字体、字号:Font
修改字体颜色:ForeColor
修改选中时的背景色:SelectionBackColor
修改选中时的字体颜色:SelectionForeColor
(5)设置选中模式
设置选中行时,是选中全部列还是当前列:SelectionMode
CellSelect:当前列
FullRowSelect:全部列
RowHeaderSelect:单元列和行两种选中模式
2. List集合数据源
(1)目的
让DataGridView显示数据
(2)步骤:
① 编写实体类(将要显示的数据封装成实体类)
public class Employee
{
public int EmployeeId { get; set; }
public string EmployeeName { get; set; }
public string IdNo { get; set; }
public string PhoneNumber { get; set; }
public string Post { get; set; }
public string Department { get; set; }
public string Province { get; set; }
public string Gender { get; set; }
public string WeiXinNumber { get; set; }
public string OtherWork { get; set; }
public DateTime EntryData { get; set; }
public string Phote { get; set; }
}
② 设置dgv绑定属性为“实体类的属性”(列标题的三大属性)
Name:用于读取数据(一般和DataProperName的值相同)
DataProperName:用于绑定实体类的属性,该值为实体类的属性名
HeaderText:用于展示列名
③ 组织数据集合
//组织数据集合
List<Employee> eList = new List<Employee>();
for(int i = 0; i < 10; i++)
{
eList.Add(new Employee()
{
EmployeeName = "员工" + i,
IdNo = "1202404071154" + i,
PhoneNumber = "123456789" + i,
Post = "职位" + i,
Department = "部门" + i,
Province = "身份" + i,
Gender = "男"
});
}
④ 设置DataSource
//设置dgv的DataSource属性
this.dgvEList.DataSource = eList;
⑤禁止自动生成列(放到构造方法中)
在不设置标题时,dgv会按照属性名自动生成列。如果想要只显示设置的列,需要将此设置为false。
public DGVTestForm()
{
InitializeComponent();
//设置禁止生成列,在构造函数中设置
this.dgvEList.AutoGenerateColumns = false;
}
特别注意:如果数据不显示,请检查DataPropertyName属性是否设置,其次,检查实体类是否是添加的属性,而不是共有字段。