Tengo este error en mi programa que estoy haciendo, tengo otros 4 formularios iguales pero no se porque en este me esta saliendo el error:
El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección. Nombre del parametro: index
 
Aca les dejo la parte de mi formulario
 
__________________________________________________  _________________
 
Public Class FromProductos
    Private dt As New DataTable
    Private Sub FromProductos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        mostrar()
    End Sub
    Public Sub limpiar()
        btnguardar.Visible = True
        btnEditar.Visible = False
        txtID.Text = ""
        txtmarca.Text = ""
        txtnomMarca.Text = ""
        txtgeneracion.Text = ""
        txtTipo.Text = ""
        txtprecio.Text = ""
    End Sub
 
    Private Sub mostrar()
        Try
            Dim func As New fproducto
            dt = func.mostrar
            DataListado.Columns.Item("Eliminar").Visible = False
 
 
            If dt.Rows.Count <> 0 Then
                DataListado.DataSource = dt
                txtBuscar.Enabled = True
                DataListado.ColumnHeadersVisible = True
                inexistente.Visible = False
            Else
                DataListado.DataSource = Nothing
                txtBuscar.Enabled = False
                DataListado.ColumnHeadersVisible = False
                inexistente.Visible = True
            End If
            btnAceptar.Visible = True
            btnEditar.Visible = False
            buscar()
 
 
        Catch ex As Exception
            MsgBox(ex.Message)
 
        End Try
 
    End Sub
    Private Sub buscar()
        Try
            Dim ds As New DataSet
            ds.Tables.Add(dt.Copy)
            Dim dv As New DataView(ds.Tables(0))
 
 
            dv.RowFilter = cboCampo.Text & " like '" & txtBuscar.Text & "%'"
 
            If dv.Count <> 0 Then
                inexistente.Visible = False
                DataListado.DataSource = dv
                ocultar_columnas()
 
            Else
                inexistente.Visible = True
                DataListado.DataSource = Nothing
            End If
 
        Catch ex As Exception
            MsgBox(ex.Message)
 
        End Try
    End Sub
    Private Sub ocultar_columnas()
 
    End Sub
 
    Private Sub btnguardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnguardar.Click
        Try
            If Me.ValidateChildren = True And txtID.Text <> "" And txtmarca.Text <> "" And txtnomMarca.Text <> "" And txtgeneracion.Text <> "" And txtprecio.Text <> "" And txtTipo.Text <> "" Then
 
                Dim dts As New vproducto
                Dim func As New fproducto
 
                dts.gidproducto = txtID.Text
                dts.gidmarca = txtmarca.Text
                dts.ggeneracion = txtgeneracion.Text
                dts.gprecio = txtprecio.Text
                dts.gidalmacen = txtTipo.Text
 
                If func.insertar(dts) Then
                    MessageBox.Show("Producto registrado correctamente", "Guardando datos", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    mostrar()
                    limpiar()
                    cargar_detalle()
                Else
                    MessageBox.Show("Producto no registrado correctamente", "Guardando datos", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    mostrar()
 
                    limpiar()
                End If
            Else
                MessageBox.Show("Falta ingresar algunos datos", "Guardando datos", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
 
    Private Sub DataListado_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataListado.CellClick
        Try
            txtID.Text = DataListado.SelectedCells.Item(1).Value
            txtmarca.Text = DataListado.SelectedCells.Item(2).Value
            txtnomMarca.Text = DataListado.SelectedCells.Item(3).Value
            txtTipo.Text = DataListado.SelectedCells.Item(4).Value
            txtgeneracion.Text = DataListado.SelectedCells.Item(5).Value
            txtprecio.Text = DataListado.SelectedCells.Item(6).Value
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
 
    Private Sub DataListado_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataListado.CellContentClick
        Try
            If e.ColumnIndex = Me.DataListado.Columns.Item("Eliminar").Index Then
                Dim chkcell As DataGridViewCheckBoxCell = Me.DataListado.Rows(e.RowIndex).Cells("Eliminar")
                chkcell.Value = Not chkcell.Value
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
    Private Sub btnEditar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEditar.Click
        Try
            Dim result As DialogResult
 
            result = MessageBox.Show("Realmente desea editar los datos de la venta?", "MOdificando registros", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
 
            If result = DialogResult.OK Then
 
                If Me.ValidateChildren = True And txtID.Text <> "" And txtmarca.Text <> "" And txtnomMarca.Text <> "" And txtgeneracion.Text <> "" And txtprecio.Text <> "" And txtTipo.Text <> "" Then
                    Try
                        Dim dts As New vproducto
                        Dim func As New fproducto
 
                        dts.gidproducto = txtID.Text
                        dts.gidmarca = txtmarca.Text
                        dts.ggeneracion = txtgeneracion.Text
                        dts.gprecio = txtprecio.Text
                        dts.gidalmacen = txtprecio.Text
 
                        If func.editar(dts) Then
                            MessageBox.Show("Producto modficado correctamente", "Modificado registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
                            mostrar()
                            limpiar()
                        Else
                            MessageBox.Show("Producto no fue modifcada intente de nuevo", "Modificando registros", MessageBoxButtons.OK, MessageBoxIcon.Error)
                            mostrar()
                            limpiar()
                        End If
 
                    Catch ex As Exception
                        MsgBox(ex.Message)
                    End Try
                Else
                    MessageBox.Show("Falta ingresar algunos datos", "Modificando registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
 
    Private Sub cbeliminar_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbEliminar.CheckedChanged
        Try
            If cbEliminar.CheckState = CheckState.Checked Then
                DataListado.Columns.Item("Eliminar").Visible = True
            Else
                DataListado.Columns.Item("Eliminar").Visible = False
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
 
    Public Sub cargar_detalle()
        Try
 
 
        FormAgregarMarca.txtID.Text = DataListado.SelectedCells.Item(1).Value
        FormAgregarMarca.txtmarca.Text = DataListado.SelectedCells.Item(2).Value
        FormAgregarMarca.txtnomMarca.Text = DataListado.SelectedCells.Item(3).Value
        FormAgregarMarca.txtgeneracion.Text = DataListado.SelectedCells.Item(4).Value
        FormAgregarMarca.txtTipo.Text = DataListado.SelectedCells.Item(5).Value
        FormAgregarMarca.txtTipo.Text = DataListado.SelectedCells.Item(6).Value
 
            FormAgregarMarca.ShowDialog()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
    Private Sub txtbuscar_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtBuscar.TextChanged
        buscar()
    End Sub
 
 
    Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click
        limpiar()
        mostrar()
 
    End Sub
    Private Sub btnAlmacen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAlmacen.Click
        FormAlmacen.txtflag.Text = "1"
        FormAlmacen.ShowDialog()
    End Sub
    Private Sub btnMarca_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMarca.Click
        FormMarca.txtflag.Text = "1"
        FormMarca.ShowDialog()
    End Sub
 
End Class 
  
 

