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 控件的使用