web-dev-qa-db-fra.com

Obtenir l'index de colonne de cellule en cours dans l'événement DataGridView CurrentCellChanged

J'ai le gestionnaire d'événements CurrentCellChanged d'une DataGridView et je veux pouvoir accéder à l'index de colonne des cellules sélectionnées actuellement à partir du gestionnaire d'événements. 

J'avais l'habitude d'avoir le code dans le gestionnaire CellClick qui a DataGridViewCellEventArgs en tant que paramètre afin que je puisse obtenir l'index de colonne à partir du paramètre event args mais l'événement CurrentCellChanged a EventArgs en tant que paramètres qui, je crois, est censé impliquer qu'il n'y a pas de données pour cet evènement. 

Existe-t-il un moyen d'accéder au nouvel index de colonne de cellules actuellement sélectionné?

13
MBU

Utilisez la propriété 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

33
Akram Shahda

Utilisez la propriété CurrentCell de DataGridView.

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

Si vous voulez vérifier avec l'en-tête de la colonne, puis

dataGridView.CurrentCell.Column.Header
0
Bhavani Kannan

Il est à noter que si quelqu'un utiliseWPF(avec le DataGrid plutôt que DataGridView), il peut simplement faire:

DataGrid currentGrid = sender as DataGrid;

et alors

currentGrid.CurrentColumn.DisplayIndex

ou 

currentGrid.CurrentCell.Column.DisplayIndex
0
XtraSimplicity