首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

datagridview上一次以编程方式更改的单元格不包含在changedrow中

在使用DataGridView控件时,如果以编程方式更改了单元格的值,这些更改不会自动包含在DataGridView的ChangedRow集合中。ChangedRow集合是指包含了用户通过界面交互更改的单元格的行集合。

要解决这个问题,可以通过以下步骤来手动将编程方式更改的单元格添加到ChangedRow集合中:

  1. 首先,需要创建一个自定义的数据结构来保存编程方式更改的单元格的信息。可以使用一个List或者其他合适的数据结构来保存这些信息。
  2. 在编程方式更改单元格的代码中,将更改的单元格的信息添加到自定义数据结构中。
  3. 在需要获取所有更改的行时,遍历DataGridView的所有行,对于每一行,检查自定义数据结构中是否存在该行的更改信息。如果存在,则将该行添加到ChangedRow集合中。

以下是一个示例代码,演示了如何手动将编程方式更改的单元格添加到ChangedRow集合中:

代码语言:txt
复制
// 自定义数据结构,用于保存编程方式更改的单元格信息
List<DataGridViewCell> programmaticallyChangedCells = new List<DataGridViewCell>();

// 编程方式更改单元格的代码示例
private void ChangeCellValueProgrammatically()
{
    // 假设要更改第一行的第一个单元格的值为"New Value"
    dataGridView1.Rows[0].Cells[0].Value = "New Value";

    // 将更改的单元格添加到自定义数据结构中
    programmaticallyChangedCells.Add(dataGridView1.Rows[0].Cells[0]);
}

// 获取所有更改的行的代码示例
private void GetChangedRows()
{
    // 清空ChangedRow集合
    dataGridView1.Rows.ClearSelection();

    // 遍历DataGridView的所有行
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        // 检查自定义数据结构中是否存在该行的更改信息
        bool hasChanges = false;
        foreach (DataGridViewCell cell in programmaticallyChangedCells)
        {
            if (cell.RowIndex == row.Index)
            {
                hasChanges = true;
                break;
            }
        }

        // 如果存在更改信息,则将该行添加到ChangedRow集合中
        if (hasChanges)
        {
            row.Selected = true;
        }
    }
}

这样,通过手动将编程方式更改的单元格添加到ChangedRow集合中,就可以获取到包含所有更改的行了。

对于DataGridView的其他用法和功能,可以参考腾讯云提供的DataGridView相关的文档和产品介绍:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

5分33秒

JSP 在线学习系统myeclipse开发mysql数据库web结构java编程

领券