【发布时间】:2015-03-22 21:49:36
【问题描述】:
对于一项作业,我们正在创建一个简单的电子表格程序,类似于 Excel。我的 DataGridView 中的单元格可由用户编辑,当用户编辑单元格时会发生多种情况。
与 Excel 类似,如果您在单元格 A2 中键入 =A1,则 A2 的值将更改为等于单元格 A1 的值,并且用户看到的文本会更新以反映这一点。但是,A2 的文本属性需要保持为=A1,以防 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 函数是否应该循环两次?我怎样才能阻止这种情况发生?谢谢!
【问题讨论】:
-
您确定两个
CellEndEdit事件都针对同一个单元格吗?此外,您是否有可能多次将该方法附加到CellEndEdit事件?
标签: c# winforms visual-studio datagridview