0

私のデータグリッドビューでは、ユーザーが最初の行に値を与えると、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;
        }

ここに画像の説明を入力

4

1 に答える 1

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;
    }
}
于 2012-10-27T18:31:23.163 に答える