排序 - 标题DataGridView的异常

时间:2016-03-22 14:24:34

标签: c# winforms datagridview datagridviewcolumn

我在windows窗体中对datagridview的标题进行排序时遇到问题...

这是我在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);
        }
    }

我的datagridview结果.. enter image description here

但是当我点击标题列时,我有这个例外: enter image description here

如何解决?

2 个答案:

答案 0 :(得分:3)

您应该检查点击的单元格是否不在标题行中,否则当您尝试访问该行的单元格时,会收到mapWithNotSoImportantValues.putAll( mapWithImportantValues ); ,因为您试图在ArgumentOutOfRangeException获取单元格。

  

指数超出范围。必须是非负数且小于   集合。

您需要检查RowIndex = -1

答案 1 :(得分:0)

那是因为您单击了标题,而不是一行。 CellClick会同时触发,并在您点击标题时传递RowIndex到-1。

单击标题时,更改代码以忽略事件:

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);
    }
}