Как получить изменение значения ячейки при закрытии формы? - PullRequest
1 голос
/ 27 октября 2010

У меня есть форма с DataGridView.

В этом DataGridView есть DataGridViewComboBoxColumn. При изменении значения ячейки этого DataGridViewComboBoxColumn событие CellValueChanged вызывается только при выходе из ячейки (например, если я щелкаю в другой ячейке). Событие не запускается, когда я изменяю значение, а затем просто закрываю форму.

Итак, как я могу сохранить изменения (если они есть), если моя форма просто закрыта?

[UPDATE]

CellValueChanged не запускается, когда форма, на которой включен DataGridView, отображается в форме. ShowDialog ():

using (FormWithDataGridView form = new FormWithDataGridView()) {
    form.ShowDialog();   // DataGridView on form fires no CellValueChanged-Event when form gets closed
}

Ответы [ 3 ]

3 голосов
/ 27 октября 2010

Из публикации контента сообщества в записи MSDN для ShowDialog , когда вы закрываете модальную форму, она просто скрывается, поэтому у вызывающего кода все еще может быть доступ к DialogResult или другим свойствамформа.По-видимому, именно поэтому событие CellValueChanged на DataGridView не запускается (события CellParsing и CellEndEdit также не генерируются).

В качестве временного решения в событии закрытия формы,Вы можете удалить фокус из DataGridView, что приведет к срабатыванию события CellValueChanged при необходимости.Если у вас нет других элементов управления в форме, на которые можно установить фокус, вы можете поместить метку в форму и выделить ее.

0 голосов
/ 20 июня 2011

Сам столкнулся с подобной ситуацией, но с последним обновленным флажком программно - не обновлялся, пока я не переключил строки.

Попробуйте вызвать метод BindingSource.EndEdit непосредственно перед обновлением комбинированного списка.

После этого я вызываю адаптер данных, и он распознает изменение в сетке данных - так он и работает.

0 голосов
/ 27 октября 2010

вы пробовали использовать dataGridView1.CellParsing? Это должно (насколько я понимаю) сработать, даже если фокус ячейки потерян из-за закрытия содержащейся формы. Это сработает, только если пользователь изменил значение ячейки.

[Edit] Теперь, когда я думаю об этом немного больше, я бы попробовал dataGridView1.CellEndEdit на вашем месте. Это лучше .. [/ Edit]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...