在DataGridView CellDoubleClick上从另一行返回数据

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

我的方法:

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|

此代码在我测试过的所有数据库上都有效,但是我在此上发现了这个问题。

c# datagridview click row cell
1个回答
0
投票

您的代码适用于可能导致此问题的所选单元格。尝试其他解决方案,并使用'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括号内使用了列名。您应该使用列名。如果网格单元格中存在空值,则应正确处理以避免空引用异常。

© www.soinside.com 2019 - 2024. All rights reserved.