我们曾经使用过远点网格,这使得这很容易,但现在我们正在使用datagridview来表示我们的表单。 我的问题是我需要在datagridview中更改记录,我使用了Cell Leave事件。
private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1[e.ColumnIndex, e.RowIndex].Value == null)//incase it is a blanked cell
{
MessageBox.Show("Cell changed:" + e.ColumnIndex.ToString() + ":" + e.RowIndex.ToString() + " New Value:" + " null");
}
else
{
MessageBox.Show("Cell changed:" + e.ColumnIndex.ToString() + ":" + e.RowIndex.ToString() + " New Value:" + dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString());
}
}
我通过更改一个值来测试上面的代码,然后按下回车键(就像用户当前所做的那样),但它显示的不是更改的值,而是前一个。
我已经完成的一个解决方法是更新datagridview中的所有记录,问题是它比我之前需要的时间大约多15秒 - 如果只更改了一条记录,则不需要。
答案 0 :(得分:1)
好的,我想我可能找到了答案: 如果我将以下代码放在if-else语句之前,那么单元格更改已被识别
dataGridView1.EndEdit();
之后,可以看到更改后的单元格值。看起来不错!