我有以下代码:
if (GridSellProducts.CurrentCell.ColumnIndex == 1 && e.Control is TextBox)
{
TextBox textBox = e.Control as TextBox;
textBox.KeyPress -= new KeyPressEventHandler(QuantityFieldValidate);
textBox.KeyPress += new KeyPressEventHandler(QuantityFieldValidate);
textBox.LostFocus -= new EventHandler(QuantityCellLeave);
textBox.LostFocus += new EventHandler(QuantityCellLeave);
}
和
private void QuantityCellLeave(object sender, EventArgs e)
{
// calculate total value
quantity = Convert.ToDecimal(GridSellProducts.Rows[GridSellProducts.CurrentCell.RowIndex].Cells["Qnty"].Value);
}
问题在于,当我第一次运行代码并在Qnty字段中输入数量时,无论我输入的是什么数字,小数quantity
都会返回0。 18.当我单击返回单元格以输入另一个数字23时,十进制现在返回数字18。
为什么是这样?
答案 0 :(得分:1)
你只需要消耗不同的事件; CellEndEdit
void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex != qntyColumnIndex) { return; }
quantity = Convert.ToDecimal(
GridSellProducts.Rows[e.RowIndex]
.Cells["Qnty"].Value);
}
其中qntyColumnIndex
是该列的索引。