当同一行中的另一个单元格发生更改时,如何更改DataGridView Cell的值?

时间:2012-09-04 07:07:59

标签: c# winforms windows-forms-designer

enter image description here

我希望在Amount cell时更改Qty or Price changed

Amount = Qty * Price

我尝试了这段代码,它总是给我ArgumentOutOfRangeException。

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (dg_invoices_items.Columns[e.ColumnIndex].Name == "qty")
            {   
                dg_invoices_items[e.RowIndex, 4].Value =Convert.ToString(
                        Convert.ToInt32(dg_invoices_items[e.RowIndex, 2].Value) *
                        Convert.ToInt32(dg_invoices_items[e.RowIndex, 3].Value));
            }
        }

1 个答案:

答案 0 :(得分:2)

列索引从0开始,列索引太高了。

  • 第1栏:0,产品
  • 第二栏:1,数量
  • 第3栏:2,价格
  • 第4栏:3,金额

为避免这种情况,您可以使用命名列:

dg_invoices_items["Qty", e.RowIndex].Value = Convert.ToString(
     Convert.ToInt32(dg_invoices_items["Price", e.RowIndex].Value) *
     Convert.ToInt32(dg_invoices_items["Amount", e.RowIndex].Value));

Altough我目前无法测试任何代码,所以这可能无效。