以编程方式更改DataGridView单元格值(Change DataGridView Cell Value Programmatically)

编程入门 行业动态 更新时间:2024-10-15 02:26:05
以编程方式更改DataGridView单元格值(Change DataGridView Cell Value Programmatically)

我有一个datagridview,它有一个数据表作为数据源。 我需要手动更改一些单元格值。 例如,如果单元格输入值包含字符'g',则在离开单元格时它必须自动更改“abc”。 以下代码检查当前单元格的格式化值:

private void dgwPNotlar_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { if (e.ColumnIndex<2||e.ColumnIndex>4||e.FormattedValue.ToString()=="") { return; } if (e.FormattedValue.ToString().Contains('G')||e.FormattedValue.ToString().Contains('g')) { dgwPNotlar.EditMode = DataGridViewEditMode.EditProgrammatically; dgwPNotlar.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "abc"; dgwPNotlar.EndEdit(); dgwPNotlar.EditMode = DataGridViewEditMode.EditOnEnter; return; } }

代码“dgwPNotlar.EndEdit();” 运行时,我更改的单元格值为“abc”,返回上一个值为“g”或“G”。

有任何想法吗?

I have a datagridview which has a datatable as data source. I need to change some cell values manually. For example, if cell input value contains character 'g', it must change "abc" automatically when I leave cell. Following code checks the formatted value of current cell:

private void dgwPNotlar_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { if (e.ColumnIndex<2||e.ColumnIndex>4||e.FormattedValue.ToString()=="") { return; } if (e.FormattedValue.ToString().Contains('G')||e.FormattedValue.ToString().Contains('g')) { dgwPNotlar.EditMode = DataGridViewEditMode.EditProgrammatically; dgwPNotlar.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "abc"; dgwPNotlar.EndEdit(); dgwPNotlar.EditMode = DataGridViewEditMode.EditOnEnter; return; } }

When the code "dgwPNotlar.EndEdit();" runs, the cell value I changed is "abc", returns to previous value as "g" or "G"..

Any ideas?

最满意答案

在验证事件之后需要更改单元格,因此请尝试使用CellValidated事件:

void dgv_CellValidated(object sender, DataGridViewCellEventArgs e) { string cellValue = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].FormattedValue.ToString(); if (cellValue.Contains('G') || cellValue.Contains('g')) { dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "abc"; } }

The changing of the cell needs to happen after the validating event, so try the CellValidated event instead:

void dgv_CellValidated(object sender, DataGridViewCellEventArgs e) { string cellValue = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].FormattedValue.ToString(); if (cellValue.Contains('G') || cellValue.Contains('g')) { dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "abc"; } }

更多推荐

本文发布于:2023-08-05 21:46:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1440819.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单元格   方式   DataGridView   Programmatically   Change

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!