C# WinForms DataGridView动态添加新行的两种方法

程一诺
程一诺
发布时间:2026-10-14| 6人浏览过
原创

在C# WinForms开发中,有时需要在运行时动态向DataGridView控件插入新数据。本文将详细讲解两种主流实现方式:一种是利用内置API快速添加带有默认单元格的行;另一种是构建自定义DataGridViewRow对象,支持混合格式化的列(如同时包含文本和下拉列表),适用于复杂的交互场景。

方法一:利用 Rows.Add 快速插入标准行

当DataGridView的数据列结构固定,且只需要简单插入数值时,这是最简洁高效的方法。该方法会自动为每一列创建默认的单元格,并返回新行的索引。

第1步:调用 Add 方法获取新行索引

目的:在网格末尾追加一行并定位该新行。
入口:当前Form类的代码逻辑中
动作:调用 this.dataGridView1.Rows.Add()。此方法内部会执行以下操作:
- 为DataGridView配置的每一列创建对应的默认Cell对象(通常是TextBoxCell)。
- 将新行实例添加到Rows集合中。
- 触发UI刷新显示该行。

由于该方法返回整数类型的索引值(int index),我们可以直接使用该索引来填充具体数据。

int index = this.dataGridView1.Rows.Add();
// 通过索引直接赋值单元格内容
this.dataGridView1.Rows[index].Cells[0].Value = "ID1";
this.dataGridView1.Rows[index].Cells[1].Value = "NameA";
this.dataGridView1.Rows[index].Cells[2].Value = "Active";

完成判断:运行代码后,DataGridView最后一行出现,且第一、二、三列分别显示对应字符串。

方法二:构建 DataGridViewRow 对象实现定制化列

在需要控制列类型的特殊场景中(例如某列需显示下拉框ComboBox,或按钮Button),标准Add方法无法满足要求。此时需要先实例化行和特定的单元格类,组装后再添加到主控件中。

第1步:实例化 Row 及各类 Cell 对象

目的:定义新行的骨架及其包含的特殊控件类型。
动作:
1. 创建空的 DataGridViewRow 对象。
2. 根据需要添加的列类型,实例化对应的Cell:
- DataGridViewTextBoxCell:用于常规文本输入。
- DataGridViewComboBoxCell:用于下拉菜单选择。
- DataGridViewButtonCell:用于触发点击事件。

// 新建一行
DataGridViewRow row = new DataGridViewRow();

// 添加第一个单元格:文本框类型
DataGridViewTextBoxCell txtCell = new DataGridViewTextBoxCell();
txtCell.Value = "Custom_AAA";
row.Cells.Add(txtCell);

// 添加第二个单元格:下拉框类型
DataGridViewComboBoxCell comboCell = new DataGridViewComboBoxCell();
row.Cells.Add(comboCell); // 可在此处进一步设置 Items 属性来预加载选项

第2步:将组装好的 Row 加入 DataGridView

目的:将内存中构建好的行渲染到界面上。
动作:调用 dataGridView1.Rows.Add(row)。

// 完成添加
this.dataGridView1.Rows.Add(row);

技术优势:这种方法比第一种更灵活,特别适合生成具有混合控件结构的表单或配置面板。虽然代码量较多,但能精确控制每一列的交互行为。

排错与维护建议

  • 索引越界检查:在使用方法一时,务必确保 Cells[索引] 中的数字不超过 DataGridView 实际定义的列数(Count),否则会抛出异常。
  • 性能优化:如果需批量添加数千行数据,频繁调用 Rows.Add() 会导致严重的界面卡顿。建议先使用 DataTable 在内存中准备好所有数据,再一次性绑定 DataSource,或使用 SuspendBinding/ResumeBinding 减少重绘次数。
  • 线程安全:C# Windows Forms 的 UI 控件只能由创建它的线程访问。若在后台线程(Task/Thread)中执行添加行操作,需使用 Invoke 封送至UI线程。

总结

以上介绍了在C# WinForms中为DataGridView添加新行的两种核心方式。对于简单的单行数据录入,直接使用 Rows.Add() 最为便捷;而对于需要包含下拉列表、按钮等复杂列类型的场景,构建独立的 DataGridViewRow 则提供了更大的自由度。以上就是如何在C# WinForms中为DataGridView动态添加新行的详细内容,更多关于C#图形界面开发的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。