DataGridView 表格数据控件
DataGridView 是一个用来显示表格数据的控件,类似 HTML 里的 table。
DataGridView 可以绑定的数据格式有 List<T>、DataTable、DataSet 等。
动态创建 DataTable 并绑定
private void button7_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable("Student"); // DataTable对象,表名为Student
// 开始增加列头
dt.Columns.Add("编号", typeof(Int32));
dt.Columns.Add("姓名", typeof(String));
dt.Columns.Add("成绩", typeof(String));
// 开始增加行数据
DataRow row = dt.NewRow();
row[0] = 1;
row[1] = "张";
row[2] = "98";
dt.Rows.Add(row); // 向DataTable增加第一行记录
row = dt.NewRow();
row[0] = 2;
row[1] = "李";
row[2] = "78";
dt.Rows.Add(row); // 向DataTable增加第二行记录
// 设置DataTable的主键
dt.PrimaryKey = new DataColumn[]
{
dt.Columns[0]
};
this.dataGridView1.DataSource = dt;
}Code language: JavaScript (javascript)
点击按钮后,DataGridView 会自动显示 DataTable 中的所有数据,列头对应 DataTable 的列名。
绑定 List<T>
class Student
{
public int 编号 { get; set; }
public string 姓名 { get; set; }
public string 成绩 { get; set; }
}
private void button7_Click(object sender, EventArgs e)
{
List<Student> list = new List<Student>();
list.Add(new Student { 编号 = 1, 姓名 = "张", 成绩 = "98" });
list.Add(new Student { 编号 = 2, 姓名 = "李", 成绩 = "78" });
this.dataGridView1.DataSource = list;
}Code language: JavaScript (javascript)
常用属性
| 属性 | 说明 |
|---|---|
DataSource | 数据源,绑定后自动生成列和行 |
AutoGenerateColumns | 是否自动根据数据源生成列(默认 true) |
Columns | 列集合,可手动配置列 |
Rows | 行集合 |
ReadOnly | 是否只读 |
AllowUserToAddRows | 是否允许用户新增行 |
AllowUserToDeleteRows | 是否允许用户删除行 |
SelectionMode | 选择模式(单元格、行、整行等) |
MultiSelect | 是否允许多选 |
常用事件
| 事件 | 说明 |
|---|---|
CellClick | 单元格被点击 |
CellDoubleClick | 单元格被双击 |
SelectionChanged | 选中项改变 |
CellValueChanged | 单元格值改变 |
RowHeaderMouseClick | 行头被点击 |
获取选中行数据
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
string name = row.Cells["姓名"].Value.ToString();
MessageBox.Show(name);
}
}Code language: JavaScript (javascript)

Previous: ContextMenuStrip 右键菜单控件
Next: DateTimePicker 日期时间选择控件