上周我正在开发一个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搜索了问题,但没有找到答案。任何人都可以告诉我这个代码有什么不妥。
在此先感谢您的回复