VB_NET_ DataGridView1_Errore

di il
0 risposte

VB_NET_ DataGridView1_Errore

Non riesco a popolare una  DataGridView1mi da sempre questo errore…
System.ArgumentException: 'La riga specificata contiene un numero di celle maggiore del numero di colonne.
Nome parametro: dataGridViewRow'

Questo e il codice che utilizzo…




Public Class TorneoForm
    Private giocatori As New List(Of Giocatore)()

    Private Sub NomeGiocatoreTextBox_KeyPress(sender As Object, e As KeyPressEventArgs) Handles NomeGiocatoreTextBox.KeyPress
        If e.KeyChar = ChrW(Keys.Enter) Then
            e.Handled = True ' Impedisce l'aggiunta di un carattere di ritorno a capo nella casella di testo
            AggiungiGiocatoriDaTextBox()
        End If
    End Sub
    Private Sub AggiungiGiocatoriDaTextBox()
        Dim nomiGiocatori As String = NomeGiocatoreTextBox.Text.Trim()

        ' Verifica se ci sono nomi da aggiungere
        If Not String.IsNullOrEmpty(nomiGiocatori) Then
            Dim delimitatori() As Char = {";", vbLf, vbCr, vbTab} ' Puoi personalizzare i delimitatori
            Dim nomiArray() As String = nomiGiocatori.Split(delimitatori, StringSplitOptions.RemoveEmptyEntries)

            ' Aggiungi i nomi alla ListBox
            For Each nome In nomiArray
                giocatori.Add(New Giocatore() With {.Nome = nome.Trim(), .Punteggio = 0})
                AggiornaListBoxGiocatori()
            Next

            NomeGiocatoreTextBox.Clear()
        End If
    End Sub
    Private Sub AggiungiGiocatore()
        Dim nomeGiocatore As String = NomeGiocatoreTextBox.Text
        If Not String.IsNullOrEmpty(nomeGiocatore) Then
            If giocatori.Count < 30 Then
                giocatori.Add(New Giocatore() With {.Nome = nomeGiocatore, .Punteggio = 0})
                NomeGiocatoreTextBox.Clear()
                AggiornaListBoxGiocatori()
            Else
                MessageBox.Show("Hai raggiunto il numero massimo di giocatori.", "Limite raggiunto", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            End If
        End If
    End Sub

    Private Sub AggiornaListBoxGiocatori()
        GiocatoriListBox.Items.Clear()
        For Each giocatore In giocatori
            GiocatoriListBox.Items.Add(giocatore.Nome)
        Next
    End Sub

    Private Sub CreaTorneoButton_Click(sender As Object, e As EventArgs) Handles CreaTorneoButton.Click
        If giocatori.Count >= 4 Then
            Dim numGruppi As Integer = giocatori.Count \ 4
            Dim quartetti As New List(Of List(Of Giocatore))()

            For i As Integer = 0 To numGruppi - 1
                Dim gruppo As New List(Of Giocatore)()
                For j As Integer = 0 To 3
                    gruppo.Add(giocatori(i * 4 + j))
                Next
                quartetti.Add(gruppo)
            Next
            ' Popola il DataGridView con i quartetti di giocatori
            DataGridView1.Rows.Clear()
            DataGridView1.Columns.Clear()

            ' Aggiunge una colonna per il nome del giocatore
            Dim colNome As New DataGridViewTextBoxColumn()
            colNome.HeaderText = "Nome Giocatore"
            DataGridView1.Columns.Add(colNome)
            DataGridView1.RowCount = quartetti.Count


            Dim colPunteggio As New DataGridViewTextBoxColumn()
            colPunteggio.HeaderText = "Punteggio"
            DataGridView1.Columns.Add(colPunteggio)


            For Each gruppo In quartetti
                Dim newRow As New DataGridViewRow()
                For Each giocatore In gruppo
                    Dim cell As New DataGridViewTextBoxCell()
                    cell.Value = giocatore.Nome ' Imposta il valore della cella con il nome del giocatore
                    newRow.Cells.Add(cell)
                Next
                DataGridView1.Rows.Add(newRow)
            Next


            MessageBox.Show("Torneo creato con successo!", "Torneo Creato", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Else
            MessageBox.Show("Devi avere almeno 4 giocatori per creare un torneo.", "Numero insufficiente di giocatori", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        End If
    End Sub

    Private Sub TorneoForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' Rimuovi tutte le colonne esistenti nel DataGridView1
        DataGridView1.Columns.Clear()
    End Sub

End Class


Public Class Giocatore
    Public Property Nome As String
    Public Property Punteggio As Integer
    Public Sub New()

    End Sub
    Public Sub New(nome As String, punteggio As Integer)
        Me.Nome = nome
        Me.Punteggio = punteggio
    End Sub
End Class

nella classe i dati sono cosi…

non capisco perche li crea doppi…

Devi accedere o registrarti per scrivere nel forum
0 risposte