我有一个带有文本列和复选框列的DataGridView。当用户单击复选框时,我想提示用户。我使用下面的代码工作了这个:
private void grid_CurrentCellDirtyStateChanged( object sender, EventArgs e )
{
var grid = sender as DataGridView;
if ( grid.IsCurrentCellDirty)
grid.CommitEdit( DataGridViewDataErrorContexts.Commit );
}
但是,当我尝试输入文本列时,它会在我输入时保持提交,而不是在我完成输入时。这会导致文本单元格不断突出显示,只允许我输入单个字符。如何修改此事件以仅在复选框值更改时进行处理?
答案 0 :(得分:2)
您需要做的只是注意复选框,而不是文本。我发现类似问题的解决方案是在CellEnter上放置一个事件,记录正在编辑的字段。脏处理事件然后检查这个以决定做什么。
为什么坐标在脏检查中不可用我无法想象。
答案 1 :(得分:1)
我遇到了同样的问题。如果你想关注特定的列(CheckBox列),这将适合你。
private void grid_CurrentCellDirtyStateChanged( object sender, EventArgs e )
{
var grid = sender as DataGridView;
if ( grid.IsCurrentCellDirty && grid.CurrentCell.ColumnIndex == 1 )
grid.CommitEdit( DataGridViewDataErrorContexts.Commit );
}