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 );
}
但是,当我尝试在文本列中键入时,它会在我键入时而不是在我完成键入时继续提交。 这会导致文本单元格不断突出显示自身,并且只允许我输入单个字符。 如何将此事件修改为仅在复选框值更改时处理?
您需要做的只是注意复选框,而不是文本。 我找到的类似问题的解决方案是在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 );
}