单击DataGridView单元格时的IndexOutOfRange异常

时间:2014-12-07 09:22:20

标签: c# winforms datagridview indexoutofrangeexception

上周我正在开发一个WinFroms项目并且我创建了一个购物车表单。 在购物车中,有一个 DataGridView 控制&它包含一个名为 purchaseQuantity 的列 purchaseQuantity 可编辑&用户只能在此栏中输入值。这是EvenHandler对于 CellEndEdit

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
{
    if (e.RowIndex <= 0 || e.ColumnIndex != 4)
        return;

    int row = e.RowIndex;
    int demandedQuantity = int.Parse(this.dataGridView1.Rows[row].Cells["purchasedQuantity"].Value.ToString());
    int inStockQunatity = int.Parse(this.dataGridView1.Rows[row].Cells["unitsInStock"].Value.ToString());
    double price = double.Parse(this.dataGridView1.Rows[row].Cells["unitPrice"].Value.ToString());

    if (demandedQuantity <= inStockQunatity)
    {
        this.dataGridView1.Rows[row].Cells["subTotal"].Value = (demandedQuantity * price).ToString();
        this.dataGridView1.Rows[row].Cells["unitsInStock"].Value = (inStockQunatity - demandedQuantity).ToString();
        this.dataGridView1.Rows[row].Cells["purchasedQuantity"].Style.BackColor = System.Drawing.Color.White;
    }
    else
    {
        MessageBox.Show(string.Format("We Have Only {0} Left In The Stock..!!", inStockQunatity.ToString()), "Error", MessageBoxButtons.OK);
        this.dataGridView1.Rows[row].Cells["purchasedQuantity"].Style.BackColor = System.Drawing.Color.Red;
    }
}

问题是,每当我点击DataGridView的任何单元格时,我都会出现以下错误:

System.Windows.Forms.dll中发生未处理的“System.IndexOutOfRangeException”类型异常 附加信息:索引-1没有值 确保列表中的最大索引小于列表大小
确保索引不是负数 确保数据列名称正确。

我有一个主页表单,用于创建 ViewProduct 表单实例, ViewProduct 表单创建购物车表单实例和放大器;我在以下功能中的主页表单中出现错误:
Home =&gt; ViewProdcuts =&gt;车

 private void ShowForm(Form form) 
 {
      this.Hide();
      form.ShowDialog();

      form.Close();
      this.Show();
 }

以下行:

form.ShowDialog();

正如我先提到的那样,我上周开始研究它。在那个时候它工作得很好,点击任意一行时没有异常被抛出&amp;我能够在 purchaseQuanttiy 单元格中输入价值 一周后它变得生气,不知道为什么(只是开玩笑)
我用Google搜索了问题,但没有找到答案。任何人都可以告诉我这个代码有什么不妥。
在此先感谢您的回复

0 个答案:

没有答案