Получить индекс текущего столбца ячейки в событии DataGridView CurrentCellChanged

#c# #winforms #datagridview #event-handling

#c# #winforms #datagridview #обработка событий

Вопрос:

У меня есть CurrentCellChanged обработчик событий a DataGridView , и я хочу иметь возможность получить доступ к индексу столбца текущей выбранной ячейки из обработчика событий.

Раньше у меня был код в CellClick обработчике, который имеет DataGridViewCellEventArgs значение параметра, поэтому я смог получить индекс столбца из параметра event args, но у CurrentCellChanged события есть EventArgs параметры as, которые, как я полагаю, должны подразумевать, что для этого события нет данных.

Есть ли способ получить доступ к новому индексу столбца выбранных в данный момент ячеек?

Ответ №1:

Используйте DataGridView.CurrentCell свойство ..

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.currentcell.aspx

 int columnIndex = dataGridView.CurrentCell.ColumnIndex;
int rowIndex = dataGridView.CurrentCell.RowIndex;
  

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcell.aspx

Ответ №2:

Используйте свойство CurrentCell в DataGridView.

 void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
{
    MessageBox.Show(dataGridView1.CurrentCell.ColumnIndex.ToString());
    MessageBox.Show(dataGridView1.CurrentCell.RowIndex.ToString());
}
  

Ответ №3:

Если вы хотите проверить это с помощью заголовка столбца, то

 dataGridView.CurrentCell.Column.Header
  

Комментарии:

1. Текущая ячейка. OwningColumn. Заголовок текста

Ответ №4:

Стоит отметить, что если кто-то использует WPFDataGrid, а не DataGridView), они могут просто сделать:

 DataGrid currentGrid = sender as DataGrid;
  

и затем

 currentGrid.CurrentColumn.DisplayIndex
  

или

 currentGrid.CurrentCell.Column.DisplayIndex