Программный выбор строки в datagridview не вызывает событие bindingsource.currentchanged - PullRequest
0 голосов
/ 15 июля 2010

Это вопрос Winform C #.

У меня есть настроенное представление данных, которое связано с источником привязки.Прослушиватель прослушивает событие bindingsource.currentchanged.

Когда я подписался на отсортированное событие настраиваемого datagridview и программно выбрал строку, событие bindingsource.currentchanged не вызывается:

dataGridViewExtended.Sorted += SortedCompleted;
private void SortedCompleted(...){
    // Some code to get rowIndex...
    dataGridViewExtended.Rows[rowIndex].Selected = true;    
}

Почемупрограммно изменить выбор строки просмотра данных не запускает bindingsource.currentchanged?Как я могу запустить это событие?

Ответы [ 3 ]

3 голосов
/ 15 июля 2010

Вы можете использовать CurrentCell Свойство, чтобы установить CurrentRow.

CurrentRow is ReadOnly.

Свойство Selected не влияет на CurrencyManager.

Существуют некоторые ограничения для измененияCurrentRow из кода в некоторых событиях DataGridView может вызывать исключение.

Чтобы изменить CurrentRow из события Dgv, вы можете использовать Control.BeginInvoke для асинхронной публикации изменений.

1 голос
/ 09 июля 2012
CurrencyManager DtCm; //SETUP CURRENCY MANAGER
DtCm = (CurrencyManager)this.BindingContext[DtTable]; //BIND CURRENCY MANAGER
int F = Dgv.CurrentRow.Index; //SET INDEX POSITION
this.DtCm.Position = F; //RESTORE POSITION
1 голос
/ 15 июля 2010

Я выяснил причину.Выбор строк DataGridView не вызывает событие CurrentChanged объекта BindingSource.Отчасти потому, что одновременно может быть выбрано несколько строк.Чтобы вызвать это событие, вам нужно установить CurrentCell объекта DataGridView.В любое время CurrentCell может быть только один.Как только вы обновите CurrentCell, событие CurrentChanged будет запущено.

В моем случае просто установить первую ячейку выбранной строки как CurrentCell.

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