CurrentCellDirtyStateChanged 提交得太快了

本文关键字:提交 CurrentCellDirtyStateChanged | 更新日期: 2023-09-27 18:36:53

我有一个带有文本列和复选框列的DataGridView。 当用户单击复选框时,我想提示用户。 我使用以下代码使其工作:

private void grid_CurrentCellDirtyStateChanged( object sender, EventArgs e )
{
  var grid = sender as DataGridView;
  if ( grid.IsCurrentCellDirty)
    grid.CommitEdit( DataGridViewDataErrorContexts.Commit );
}

但是,当我尝试在文本列中键入时,它会在我键入时而不是在我完成键入时继续提交。 这会导致文本单元格不断突出显示自身,并且只允许我输入单个字符。 如何将此事件修改为仅在复选框值更改时处理?

CurrentCellDirtyStateChanged 提交得太快了

您需要做的只是注意复选框,而不是文本。 我找到的类似问题的解决方案是在CellEnter上放置一个事件,记录正在编辑的字段。 然后,脏处理事件会对此进行检查以决定要执行的操作。

为什么坐标在肮脏的支票中不可用,我无法想象。

我刚刚遇到了同样的问题。如果您想注意特定列(复选框列),这将为您工作。

private void grid_CurrentCellDirtyStateChanged( object sender, EventArgs e )
{
  var grid = sender as DataGridView;
  if ( grid.IsCurrentCellDirty && grid.CurrentCell.ColumnIndex == 1 )
     grid.CommitEdit( DataGridViewDataErrorContexts.Commit );
}