对于作业,我们正在创建一个简单的电子表格程序,类似于Excel。我的DataGridView中的单元格可由用户编辑,当用户编辑单元格时会发生多种情况。
与Excel类似,如果您在单元格A2中键入=A1
,则A2的值更改将等于单元格A1的值,并且用户看到的文本将更新以反映此情况。但是,在A1的值更改的情况下,A2的文本属性需要保留为=A1
。
在调试我的代码时,我注意到我的CellEndEdit
函数循环了两次,虽然没有涉及循环。
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
RealCell cell = spreadsheet.GetCell(e.RowIndex, e.ColumnIndex) as RealCell;
//set the spreadsheet cell's text to reflect the user's edit
if (dataGridView1.CurrentCell.Value != null)
{
cell.Text = dataGridView1.CurrentCell.Value.ToString();
}
MenuVisibility();
}
这是一个很大的问题,因为它会再次重置单元格的文本。
CellEndEdit
函数应该循环两次吗?我怎么能阻止这种情况发生?谢谢!
答案 0 :(得分:2)
CellEndEdit
。
因此,在您的情况下,输入值为A1,触发CellEndEdit
然后你的代码设置A2 cell = A1的值,触发另一个CellEndEdit
如果需要手动抑制事件,可以添加bool来控制。