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…