排序 - 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);
}
}
我在以 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);
}
}