C# DataGridView控件的用法(附带实例)
DataGridView 控件又被称为数据表格控件,它提供一种强大而灵活的以表格形式显示数据的方式。
将数据绑定到 DataGridView 控件非常简单、直观,在大多数情况下,只需设置 DataSource 属性即可。另外,DataGridView 控件具有极高的可配置性和可扩展性,它提供大量的属性、方法和事件,可以用来对该控件的外观和行为进行自定义。
当需要在 Windows 窗体应用程序中显示表格数据时,首先考虑使用 DataGridView 控件。下图为 DataGridView 控件:

图 1 DataGridView控件
拖放到窗体中的效果如图 2 所示:

图 2 DataGridView控件在窗体中的效果
DataGridView 控件的常用属性及说明如下表所示:
DataGridView 控件的常用事件及说明如下表所示:
下面通过一个实例看一下如何使用 DataGridView 控件,该实例主要实现的功能有:禁止在 DataGridView 控件中添加/删除行、禁用 DataGridView 控件的自动排序、使 DataGridView 控件隔行显示不同的颜色、使 DataGridView 控件选中的行呈现不同的颜色和选中 DataGridView 控件中的某行时,将其详细信息显示在 TextBox 文本框中。
【实例】DateGridView 控件综合应用。创建一个 Windows 应用程序,在默认窗体中添加两个 TextBox 控件和一个 DataGridView 控件,其中,TextBox 控件用来显示选中记录的版本和价格信息,DataGridView 控件用来显示数据表中的数据,代码如下:

图 3 DataGridView 控件的使用
将数据绑定到 DataGridView 控件非常简单、直观,在大多数情况下,只需设置 DataSource 属性即可。另外,DataGridView 控件具有极高的可配置性和可扩展性,它提供大量的属性、方法和事件,可以用来对该控件的外观和行为进行自定义。
当需要在 Windows 窗体应用程序中显示表格数据时,首先考虑使用 DataGridView 控件。下图为 DataGridView 控件:

图 1 DataGridView控件
拖放到窗体中的效果如图 2 所示:

图 2 DataGridView控件在窗体中的效果
DataGridView 控件的常用属性及说明如下表所示:
| 属性 | 说明 |
|---|---|
| Columns | 获取一个包含控件中所有列的集合 |
| CurrentCell | 获取或设置当前处于活动状态的单元格 |
| CurrentRow | 获取包含当前单元格的行 |
| DataSource | 获取或设置 DataGridView 所显示数据的数据源 |
| RowCount | 获取或设置 DataGridView 中显示的行数 |
| Rows | 获取一个集合,该集合包含 DataGridView 控件中的所有行 |
DataGridView 控件的常用事件及说明如下表所示:
| 事件 | 说明 |
|---|---|
| CellClick | 在单击单元格的任意部分时发生 |
| CellDoubleClick | 在双击单元格中的任意位置时发生 |
下面通过一个实例看一下如何使用 DataGridView 控件,该实例主要实现的功能有:禁止在 DataGridView 控件中添加/删除行、禁用 DataGridView 控件的自动排序、使 DataGridView 控件隔行显示不同的颜色、使 DataGridView 控件选中的行呈现不同的颜色和选中 DataGridView 控件中的某行时,将其详细信息显示在 TextBox 文本框中。
【实例】DateGridView 控件综合应用。创建一个 Windows 应用程序,在默认窗体中添加两个 TextBox 控件和一个 DataGridView 控件,其中,TextBox 控件用来显示选中记录的版本和价格信息,DataGridView 控件用来显示数据表中的数据,代码如下:
// 定义数据库连接字符串
string strCon = "Server=XIAOKE;User Id=sa;Pwd=;Database=db_EMS";
SqlConnection sqlcon; // 声明数据库连接对象
SqlDataAdapter sqlda; // 声明数据库桥接器对象
DataSet myds; // 声明数据集对象
private void Form1_Load(object sender, EventArgs e)
{
dataGridDiew.AllowUserToAddRows = false; // 禁止添加行
dataGridDiew.AllowUserToDeleteRows = false; // 禁止删除行
sqlcon = new SqlConnection(strCon); // 创建数据库连接对象
// 获取数据表中的所有数据
sqlda = new SqlDataAdapter("select * from tb_PDic", sqlcon);
myds = new DataSet(); // 创建数据集对象
sqlda.Fill(myds); // 填充数据集
dataGridDiew.DataSource = myds.Tables[0]; // 为dataGridView指定数据源
// 禁用DataGridView控件的排序功能
for (int i = 0; i < dataGridDiew.Columns.Count; i++)
{
dataGridDiew.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
}
// 设置SelectionMode属性为FullRowSelect,使控件能够整行选择
dataGridDiew.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
// 设置DataGridView控件中的数据以各行换色的形式显示
foreach (DataGridViewRow dgvRow in dataGridDiew.Rows) // 遍历所有行
{
if (dgvRow.Index % 2 == 0) // 判断是否是偶数行
{
// 设置偶数行颜色
dataGridDiew.Rows[dgvRow.Index].DefaultCellStyle.BackColor = Color.LightSalmon;
}
else // 奇数行
{
// 设置奇数行颜色
dataGridDiew.Rows[dgvRow.Index].DefaultCellStyle.BackColor = Color.LightPink;
}
}
dataGridDiew.ReadOnly = true; // 设置dataGridView控件的ReadOnly属性,使其为只读
// 设置dataGridView控件的DefaultCellStyle.SelectionBackColor属性,使选中行的颜色发生变化
dataGridDiew.DefaultCellStyle.SelectionBackColor = Color.LightSkyBlue;
}
private void dataGridDiew_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0) // 判断选中行的索引是否大于0
{
// 记录选中的ID号
int intID = (int)dataGridDiew.Rows[e.RowIndex].Cells[0].Value;
sqlcon = new SqlConnection(strCon); // 创建数据库连接对象
// 执行SQL查询语句
sqlda = new SqlDataAdapter("select * from tb_PDic where ID=" + intID + "", sqlcon);
myds = new DataSet(); // 创建数据集对象
sqlda.Fill(myds); // 填充数据集
if (myds.Tables[0].Rows.Count > 0) // 判断数据集中是否有记录
{
textBox1.Text = myds.Tables[0].Rows[0][1].ToString(); // 显示版本
textBox2.Text = myds.Tables[0].Rows[0][2].ToString(); // 显示价格
}
}
}
程序运行结果为:
图 3 DataGridView 控件的使用
ICP备案:
公安联网备案: