排序 - headers DataGridView 异常

Sorting - headers Exception of DataGridView

我在以 windows 形式对 datagridview header 进行排序时遇到问题...

这是我在 CellContentClick 上的代码

 private void dgvApprovazione_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        if (dgvApprovazione.Rows[e.RowIndex].Cells[e.ColumnIndex] is DataGridViewLinkCell)
        {//Process link on string
            System.Diagnostics.Process.Start(dgvApprovazione.Rows[e.RowIndex].Cells[e.ColumnIndex].Value as string);
        }
    }

我的数据网格视图结果..

但是当我点击 header 列时我有这个例外:

如何解决?

您应该检查单击的单元格是否不在 header 行中,否则当您尝试访问该行的单元格时,您会收到一个 ArgumentOutOfRangeException,因为您试图在RowIndex = -1.

Index was out of range. Must be non-negative and less than the size of the collection.

您需要检查是否 (e.RowIndex>=0)

那是因为您点击了 header,而不是一行。 CellClick 为两者触发,并在您单击 header 时传递 -1 的 RowIndex

更改代码以在单击 header 时忽略事件:

private void dgvApprovazione_CellContentClick(object sender, 
DataGridViewCellEventArgs e)
{
    if (e.RowIndex == -1) return;

    if (dgvApprovazione.Rows[e.RowIndex].Cells[e.ColumnIndex] is DataGridViewLinkCell)
    {//Process link on string
        System.Diagnostics.Process.Start(dgvApprovazione.Rows[e.RowIndex].Cells[e.ColumnIndex].Value as string);
    }
}