我有以下代码:
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时,decimal现在返回数字18。为什么会这样?
您只需要使用不同的事件;CCD_ 2。
void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex != qntyColumnIndex) { return; }
quantity = Convert.ToDecimal(
GridSellProducts.Rows[e.RowIndex]
.Cells["Qnty"].Value);
}
其中CCD_ 3是该列的索引。