CellContentClick löst ArgumentOutOfRangeException aus, wenn der Benutzer auf die Spaltenüberschrift klickt
Problem
In einem WinForm-Projekt verwenden Sie ein DataGridView-Steuerelement und behandeln das CellContentClick-Ereignis. Wenn der Benutzer auf die Spaltenüberschrift klickt, wird die folgende Ausnahme ausgelöst:
Das Problem besteht darin, dass, wenn der Benutzer auf die Spaltenüberschrift klickt, das CellContentClick-Ereignis ausgelöst wird und der Wert von DataGridViewCellEventsArg.RowIndex -1 ist. In Ihrem CellContentClick-Handler verwenden Sie den RowIndex-Wert, um ein Array zu indizieren. Daher die Index-Out-of-Range-Ausnahme.
Lösung
Überprüfen Sie in Ihrem CellContentClick-Ereignishandler, ob sie auf die Spaltenüberschrift geklickt und nichts getan haben, wie folgt:
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)