Похоже, что вы хотите, чтобы включить кнопку, как только пользователь начинает вводить в любой ячейке?Нужно ли обновлять DataSource
до нажатия кнопки?
Если нет, то CurrentCellDirtyStateChanged
должно работать нормально - просто не вызывайте метод CommitEdit
, вместо этого установите кнопку втам включен.
Когда ячейка теряет фокус, изменения будут применены к DataSource
- поэтому при нажатии кнопки вы сможете работать с правильными данными.
Я думаю, что, возможно, нашел решение - не уверен на 100%, так как у меня нет контроллера MVC, вам нужно подключить изменение IsDirty и посмотреть, как все это работает - я поставил точку останова в установщике свойств на своем DataSourceобъект, и он запускается со следующим кодом, а не без него, поэтому я думаю, что это работает.
Он просто использовал CurrentCellDirtyStateChanged и перечисление CurrentCellChange для параметра DataErrorContext.
void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
dataGridView1.CommitEdit(DataGridViewDataErrorContexts.CurrentCellChange);
}