Problems with datagriedView

I am working on a desktop project, C#, however I have problems working with datagridview, I want to make some fields invisible and give a headText on others, but an error message appears and the same code I use in another form and it works perfectly.

I tried instead to work with this table, work with others but the error is the same!

private void NomearDgv()
{
    dgvProduto.Columns [1].HeaderText = "Nome";
    dgvProduto.Columns [2].HeaderText = "Código de barra";
    dgvProduto.Columns [3].HeaderText = "Iva liquidado";
    dgvProduto.Columns [4].HeaderText = "Iva suportado";
    dgvProduto.Columns [8].HeaderText = "Categoria";
    dgvProduto.Columns [9].HeaderText = "Unidade";
    dgvProduto.Columns [10].HeaderText = "Tipo";
    dgvProduto.Columns [11].HeaderText = "Referência";
    dgvProduto.Columns [0].Visible = false;
    dgvProduto.Columns [5].Visible = false;
    dgvProduto.Columns [6].Visible = false;
    dgvProduto.Columns [7].Visible = false;
    dgvProduto.Columns [12].Visible = false;
    dgvProduto.Columns [13].Visible = false;
    dgvProduto.Columns [14].Visible = false;
    dgvProduto.Columns [15].Visible = false;
}

The error is:

System.ArgumentOutOfRangeException: 'The index was out of range. Must be non-negative and smaller than collection size. Parameter Name: index '

1 answer

  • answered 2019-11-08 13:42 Gonzalo Nicolás

    Remember that the column index starts with zero, so if you want to get the first column value, it is not index 1 but 0. So your code would look like:

        dgvProduto.Columns [0].HeaderText = "Nome";
        dgvProduto.Columns [1].HeaderText = "Código de barra";
        dgvProduto.Columns [2].HeaderText = "Iva liquidado";
        dgvProduto.Columns [3].HeaderText = "Iva suportado";
        dgvProduto.Columns [4].HeaderText = "Categoria";
        dgvProduto.Columns [5].HeaderText = "Unidade";
        dgvProduto.Columns [6].HeaderText = "Tipo";
        dgvProduto.Columns [7].HeaderText = "Referência";