排序 - 标题DataGridView的异常

问题描述 投票:1回答:2

我在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

怎么解决?

c# winforms datagridview datagridviewcolumn
2个回答
3
投票

您应该检查单击的单元格是否不在标题行中,否则当您尝试访问该行的单元格时,您会收到ArgumentOutOfRangeException,因为您试图在RowIndex = -1获取单元格。

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

你需要检查(e.RowIndex>=0)


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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.