3

我有一个带有文本列和复选框列的 DataGridView。当用户单击复选框时,我想提示用户。我已经使用下面的代码进行了这项工作:

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

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

4

2 回答 2

2

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

为什么我无法想象的脏检查中没有坐标。

于 2012-06-11T18:34:59.480 回答
1

我只是有同样的问题。如果您想关注特定列(CheckBox Column),这将适合您。

private void grid_CurrentCellDirtyStateChanged( object sender, EventArgs e )
{
  var grid = sender as DataGridView;

  if ( grid.IsCurrentCellDirty && grid.CurrentCell.ColumnIndex == 1 )
     grid.CommitEdit( DataGridViewDataErrorContexts.Commit );
}
于 2014-06-05T19:59:15.000 回答