我在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);
}
}
怎么解决?
您应该检查单击的单元格是否不在标题行中,否则当您尝试访问该行的单元格时,您会收到ArgumentOutOfRangeException
,因为您试图在RowIndex = -1
获取单元格。
指数超出范围。必须是非负数且小于集合的大小。
你需要检查(e.RowIndex>=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);
}
}