将datagridview单元格值自动复制到同一datagridview中的另一个单元格

时间:2012-10-27 16:25:28

标签: c# winforms datagridview

在我的datagridview中,我有4列,当用户给第一行一些值时,我想采用1st row 4th cell value and put it to the 2nd Row 3rd cell,就像我必须申请所有行一样(请参阅图片)。在某些情况下,我只有2行,最大值我将有4行。

以下方法可行,但当我用2或3行测试时它不起作用。显然第3和第4不存在。

我该怎么办?这样做有更好的方法吗?

这里我编码了最多4行。

private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
        {
             var value1 = dataGridView1.Rows[0].Cells[3].Value.ToString();
            dataGridView1.Rows[1].Cells[2].Value = value1;

            var value2 = dataGridView1.Rows[1].Cells[3].Value.ToString();
            dataGridView1.Rows[2].Cells[2].Value = value2;

            var value3 = dataGridView1.Rows[2].Cells[3].Value.ToString();
            dataGridView1.Rows[3].Cells[2].Value = value3;
        }

enter image description here

1 个答案:

答案 0 :(得分:2)

对于类似的东西,你应该处理CellEndEdit,绝对不要硬编码行索引。

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex != 3)
        return;
    int nextRowIndex = e.RowIndex + 1;
    int lastRowIndex = dataGridView1.Rows.Count - 1;
    if (nextRowIndex <= lastRowIndex)
    {
        var value = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
        dataGridView1.Rows[nextRowIndex].Cells[2].Value = value;
    }
}