Winforms DataGridView CellEndEdit循环

时间:2015-03-22 21:49:36

标签: c# winforms visual-studio datagridview

对于作业,我们正在创建一个简单的电子表格程序,类似于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函数应该循环两次吗?我怎么能阻止这种情况发生?谢谢!

1 个答案:

答案 0 :(得分:2)

更改单元格值时将触发

CellEndEdit

因此,在您的情况下,输入值为A1,触发CellEndEdit

然后你的代码设置A2 cell = A1的值,触发另一个CellEndEdit

如果需要手动抑制事件,可以添加bool来控制。