Bonjour à tous,
J'ai bien cherché sur le forum et je n'ai pas trouvé de solutions.
Voilà, j'ai un projet à faire (sur visual basic express 2010), sur lequel l'utilisateur peut ajouter/supprimer/modifier des lignes et des stations de métro.
Le problème se pose quand je programme le click_ajouterstation ou le click_supprimerstation, ça m'écrit "l'index se trouve en dehors des limites du tableau", et ça renvoie le problème dans les procédures que le prof avait déjà entré pour nous "faciliter" le travail
le prof:
Et voilà mes bouton ajouter/supprimer:
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 'Quand on sélectionne une station de la listBox contenant les noms de stations, on affiche les informations de la station dans les textBox du groupe informations Private Sub lst_stations_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lst_stations.SelectedIndexChanged 'Remplir les informations de la station sélectionnée Dim indiceLigneSelectionnee As Integer = lst_lignes.SelectedIndex Dim indiceStationSelectionnee As Integer = lst_stations.SelectedIndex Dim stationSelectionnee As Station = reseau(indiceLigneSelectionnee).stations(indiceStationSelectionnee) "l'index se trouve en dehors des limites du tableau" txt_nomStation.Text = stationSelectionnee.nom txt_xStation.Text = stationSelectionnee.position.x txt_yStation.Text = stationSelectionnee.position.x txt_nbCorrespondancesStation.Text = stationSelectionnee.nbCorrespondances Dim i As Integer 'Effacer les textbox de correspondance For i = 0 To 4 gb_correspondancesStation.Controls(i).Text = "" Next 'Remplir les textbox des correspondances For i = 0 To stationSelectionnee.nbCorrespondances - 1 gb_correspondancesStation.Controls(i).Text = stationSelectionnee.correspondances(i) Next End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Private Sub btn_supprimerStation_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_supprimerStation.Click Dim p2 As Integer 'station à supprimer p2 = lst_stations.SelectedIndex Dim j2 As Integer ' j2 correspond au numéro de la ligne j2 = lst_lignes.SelectedIndex supprimerstation(reseau(j2), reseau(j2).nbStations, p2) 'Afficher les lignes dans les listBox afficherLignes(reseau, nbLignes, lst_lignes) afficherLignes(reseau, nbLignes, lst_ligneDepart) afficherLignes(reseau, nbLignes, lst_ligneArrivee) 'redessinage du réseau Me.Refresh() End SubMerci beaucoup, je précise juste que je suis débutante, et que donc, je ne connait/comprend pas tous les termes techniques
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 Private Sub btn_ajouterStation_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_ajouterStation.Click Dim s As Station 'lecture des données rentrées par l'utilisateur pour la nouvelle station s.nom = txt_nomStation.Text s.nbCorrespondances = Val(txt_nbCorrespondancesStation.Text) s.position.x = Val(txt_xStation.Text) s.position.y = Val(txt_yStation.Text) 'Mise en place d'un si pour les correspondances afin de remplir le tableau correctement If s.nbCorrespondances <> 0 Then ReDim s.correspondances(10) If s.nbCorrespondances = 1 Then s.correspondances(0) = Val(txt_correspondance0.Text) ElseIf s.nbCorrespondances = 2 Then s.correspondances(0) = Val(txt_correspondance0.Text) s.correspondances(1) = Val(txt_correspondance1.Text) ElseIf s.nbCorrespondances = 3 Then s.correspondances(0) = Val(txt_correspondance0.Text) s.correspondances(1) = Val(txt_correspondance1.Text) s.correspondances(2) = Val(txt_correspondance2.Text) ElseIf s.nbCorrespondances = 4 Then s.correspondances(0) = Val(txt_correspondance0.Text) s.correspondances(1) = Val(txt_correspondance1.Text) s.correspondances(2) = Val(txt_correspondance2.Text) s.correspondances(3) = Val(txt_correspondance3.Text) ElseIf s.nbCorrespondances = 5 Then s.correspondances(0) = Val(txt_correspondance0.Text) s.correspondances(1) = Val(txt_correspondance1.Text) s.correspondances(2) = Val(txt_correspondance2.Text) s.correspondances(3) = Val(txt_correspondance3.Text) s.correspondances(4) = Val(txt_correspondance4.Text) End If End If 'ajouter station Dim j2 As Integer ' j2 correspond au numéro de la ligne j2 = lst_lignes.SelectedIndex ReDim s.correspondances(10) Dim msg As String Dim p2 As Integer ' p2 correspond à la place ou on veut introduire la station msg = "" 'mise en place de condition en fonction de la place de la station : première station, dernière station, station intermédiaire insérerstation(reseau(j2), reseau(j2).nbStations, s, p2) 'Afficher les lignes dans les listBox afficherLignes(reseau, nbLignes, lst_lignes) afficherLignes(reseau, nbLignes, lst_ligneDepart) afficherLignes(reseau, nbLignes, lst_ligneArrivee) 'redessinage du réseau Me.Refresh() End Sub
Partager