我的方法:
private void dgvProveedores_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
_tbProveedorCodigo.Text = dgvProveedores.SelectedCells[0].Value.ToString();
_tbProveedorNombre.Text = dgvProveedores.SelectedCells[1].Value.ToString();
_indice.Text = dgvProveedores.SelectedCells[2].Value.ToString();
_grid.Visible = false;
this.Close();
}
行示例:
CODE Name index
| 012 | AVIPECUARIA | 3 |
但是返回:
| 012 | HECTOR JAVIER |214|
此数据存在此代码:
| PM012 | HECTOR JAVIER |214|
此代码在我测试过的所有数据库上都有效,但是我在此上发现了这个问题。
您的代码适用于可能导致此问题的所选单元格。尝试其他解决方案,并使用'e'参数属性:
private void dgvProveedores_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == -1) return;
_tbProveedorCodigo.Text = dgvProveedores.Rows[e.RowIndex].Cells["Codigo"].Value.ToString();
_tbProveedorNombre.Text = dgvProveedores.Rows[e.RowIndex].Cells["Nombre"].Value.ToString();
_indice.Text = dgvProveedores.Rows[e.RowIndex].Cells["Indice"].Value.ToString();
}
我在Cells括号内使用了列名。您应该使用列名。如果网格单元格中存在空值,则应正确处理以避免空引用异常。