CellContentClick lanza ArgumentOutOfRangeException cuando el usuario hace clic en el encabezado de la columna

CellContentClick lanza ArgumentOutOfRangeException cuando el usuario hace clic en el encabezado de la columna

Problema

En un proyecto de WinForm, está usando un control DataGridView y está manejando el evento CellContentClick. Cuando el usuario hace clic en el encabezado de la columna, se lanza la siguiente excepción:

El problema es que cuando el usuario hace clic en el encabezado de la columna, activa el evento CellContentClick y el valor de DataGridViewCellEventsArg.RowIndex es -1. En su controlador CellContentClick, está utilizando el valor de RowIndex para indexar una matriz. Por lo tanto, la excepción de índice fuera de rango.

Solución

En su controlador de eventos CellContentClick, verifique si hicieron clic en el encabezado de la columna y no hicieron nada, así:

private void dataGrid_OnCellContentClick(object sender, DataGridViewCellEventArgs e)
{
	var grid = (DataGridView)sender;

	if (e.RowIndex < 0)
	{
		return;
	}

	if (grid[e.ColumnIndex, e.RowIndex] is DataGridViewLinkCell linkCell)
	{
		var linkUrl = linkCell.Value.ToString();
		//Open link in browser
	}
}
Code language: C# (cs)