Hello,

Je me retrouve devant quelque chose incongru...

Je suis en train de faire un p'tit projet perso pour compter les scores durant un blindtest entre amis au nouvel an.

Vraiment un truc presque trivial quoi !

J'en suis au début mais ShowDialog me fait des trucs bizarres...

Dans ma form de départ, je fais ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
    Private Sub tsbTeam_Click(sender As System.Object, e As System.EventArgs) Handles tsbTeam.Click
        Try
            Dim frm As New frmTeam
            frm.ShowDialog()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
Et voici où j'en suis dans le code de frmTeam
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
Public Class frmTeam
 
    Private teams As List(Of Team)
    Private _team As Team
    Private Property team As Team
        Get
            Return _team
        End Get
        Set(value As Team)
            _team = value
            If IsNothing(value) Then
                tsbDel.Enabled = False
            Else
                tsbDel.Enabled = True
            End If
        End Set
    End Property
 
    Private Sub tsbNewTeam_Click(sender As System.Object, e As System.EventArgs) Handles tsbNewTeam.Click
        SetControls(tsbNewTeam)
        team = Nothing
    End Sub
 
    Private Sub SetControls(sender As ToolStripButton)
        Select Case sender.Name
            Case tsbNewTeam.Name
                tbTeamName.Enabled = True
                tbTeamName.Clear()
                tsbNewTeam.Enabled = False
                tsbEdit.Enabled = False
                tsbCancel.Enabled = True
                tsbSave.Enabled = True
            Case tsbDel.Name
 
            Case tsbEdit.Name
                tsbNewTeam.Enabled = False
                tsbEdit.Enabled = False
                tsbCancel.Enabled = True
                tsbSave.Enabled = True
            Case tsbCancel.Name
                tsbNewTeam.Enabled = True
                tsbEdit.Enabled = True
                tsbCancel.Enabled = False
                tsbSave.Enabled = False
            Case tsbSave.Name
                tbTeamName.Clear()
                tbTeamName.Enabled = False
                tsbNewTeam.Enabled = True
                tsbEdit.Enabled = True
                tsbCancel.Enabled = False
                tsbSave.Enabled = False
        End Select
    End Sub
 
    Private Sub DgvTeam_RowEnter(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvTeam.RowEnter
        Try
            If Not IsNothing(dgvTeam.CurrentRow) Then
                team = (From t As Team In teams
                Where t.Name = tbTeamName.Text.Trim
                Select t).FirstOrDefault
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
 
    Private Sub frmTeam_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        InitControls()
        dgvTeam.DataSource = teams
    End Sub
 
    Private Sub InitControls()
        teams = New List(Of Team)
        InitDGV()
    End Sub
 
    Private Sub InitDGV()
        Dim index As Integer
        index = dgvTeam.Columns.Add("dgvcName", "Nom de l'équipe")
        dgvTeam.Columns(index).DataPropertyName = "Name"
    End Sub
 
    Private Sub tsbSave_Click(sender As System.Object, e As System.EventArgs) Handles tsbSave.Click
        team = (From t As Team In teams
               Where t.Name = tbTeamName.Text.Trim
               Select t).FirstOrDefault
        If IsNothing(team) Then
            teams.Add(New Team(tbTeamName.Text.Trim))
            SetControls(tsbSave)
            dgvTeam.DataSource = Nothing
            dgvTeam.DataSource = teams
        Else
            MessageBox.Show("Une équipe avec ce nom existe déjà.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
    End Sub
 
    Private Sub tsbDel_Click(sender As System.Object, e As System.EventArgs) Handles tsbDel.Click
        If Not IsNothing(team) Then
            If MessageBox.Show("Etes-vous sûr de vouloir supprimer cette équipe ?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                teams.Remove(team)
                dgvTeam.Refresh()
            End If
        End If
    End Sub
End Class
Il n'y a donc pas vraiment grand chose. Ce qui m'inquiète c'est que, lorsque je sélectionne une ligne dans la DataGridView qui se trouve dans frmTeam, frmTeam se ferme et la ligne frmTeam.ShowDialog me retourne une erreur dont le message est "Index -1 does not have a value.".

Ce serait à la sélection de la ligne du DGV que j'aurais fait une bourde et que ça plante dans l'event RowEnter, j'aurais compris mais là...

D'ailleurs j'ai fait le test en supprimant cet évènement mais cela ne change rien. Je ne comprends vraiment pas d'où cette erreur provient... Et bien sûr, InnerException ne contient rien...

Une idée du pourquoi ?