0

ここに画像の説明を入力してください

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));
            }
        }
4

2 に答える 2

2

列のインデックスは 0 から始まります。列のインデックスが高すぎます。

  • 1 列目: 0、製品
  • 2 列目: 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));

現時点ではコードをテストできないため、これは機能しない可能性があります。

于 2012-09-04T07:15:18.623 に答える