贝利信息

c# datagridview 用法

日期:2026-01-15 00:00 / 作者:煙雲
DataGridView绑定DataTable需注意:列名须合法;空表需填充数据并调用AcceptChanges();清空Columns或设AutoGenerateColumns=False;双向编辑需BindingSource中转并设列ReadOnly=false;样式设置需注意覆盖层级和CellFormatting事件;导出Excel应遍历SelectedCells获取行索引,并启用WrapText。

DataGridView 绑定 DataTable 最常用也最容易出错

直接用 DataSource 赋值 DataTable 是最快方式,但要注意:列名必须是合法标识符(不能含空格、中文、特殊符号),否则运行时不会报错,但数据不显示或列为空。

双击单元格编辑后无法保存到 DataTable

默认绑定是单向的:数据从 DataTable → 显示,但用户修改不会自动回写。必须启用 BindingSource 中转,并确保 DataTable 的列允许编辑(ReadOnly = false)。

设置单元格样式总失效?先看 CurrentCell 和 SelectionMode

很多样式代码写了却没效果,常见原因

是:样式应用在了非当前状态的单元格上,或 SelectionMode 导致实际选中逻辑和预期不符。

导出选中行到 Excel 时漏数据或格式错乱

Clipboard.SetText() + 粘贴到 Excel 是最轻量方法,但严格依赖 SelectionModeCurrentCell 状态;用 EPPlus/NPOI 则需遍历 SelectedRows,注意它只包含“被全行选中”的行,不包括 Ctrl+单击选中的单元格。

DataGridView 的坑多数藏在“自动”二字里——自动列生成、自动类型推断、自动编辑提交。越早关掉 AutoGenerateColumns 和显式管理 BindingSource 生命周期,后期越省事。