Winforms DataGridView CellEndEdit 循环
Winforms DataGridView CellEndEdit Loops
对于一项作业,我们正在创建一个简单的电子表格程序,类似于 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
更改单元格值时会触发。
所以在你的情况下,输入值到 A1,触发 CellEndEdit
然后你的代码设置A2单元格=A1的值,触发另一个CellEndEdit
如果需要手动抑制事件,可以添加bool来控制。
对于一项作业,我们正在创建一个简单的电子表格程序,类似于 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
更改单元格值时会触发。
所以在你的情况下,输入值到 A1,触发 CellEndEdit
然后你的代码设置A2单元格=A1的值,触发另一个CellEndEdit
如果需要手动抑制事件,可以添加bool来控制。