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来控制。