Bonjour à tous !
Je débute en VB (et en programmation en général) et je dois développer un petit outil très simple pour mon entreprise.
La partie où j'effectue de simples calculs de pourcentages me pose problème :
J'ai créé 6 collections :
- Une collection de CheckBox : CollCB
- Trois collections de TextBox : CollTB1, CollTB2 et CollTB3
- Deux collections de Labels : CollR1 et CollR2 (pour Résultats)
Ces 5 collections ont le même nombre d'éléments, et je procède comme suit :
Si la CB d'indice i est cochée, j'affiche dans les labels d'indice i les résultats de calculs effectués sur le contenu des 3 textbox d'indice i.
Voilà. Or lorsque j'ai l'option Strict on, il me parle de Late Binding.
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 For i As Integer = 1 To CollCB.Count If CollCB.Item(i).Checked = False Then CollR1.Item(i).Text = "" CollR2.Item(i).Text = "" Else If IsNumber2(CollTB2.Item(i).Text) And IsNumber(CollTB1.Item(i).Text) Then CollR1.Item(i).Text = Math.Round(CollTB2.Item(i).Text / CollTB1.Item(i).Text * 100, 2) & " %" ElseIf CollTB1.Item(i).Text = "" Or CollTB2.Item(i).Text = "" Then CollR1.Item(i).Text = "/" Else CollR1.Item(i).Text = "Erreur" End If If IsNumber(CollTB1.Item(i).Text) And IsNumber2(CollTB3.Item(i).Text) Then CollR2.Item(i).Text = Math.Round(CollTB3.Item(i).Text / CollTB1.Item(i).Text * 100, 2) & " %" ElseIf CollTB1.Item(i).Text = "" Or CollTB2.Item(i).Text = "" Then CollR2.Item(i).Text = "/" Else CollR2.Item(i).Text = "Erreur" End If End If Next
J'ai bien compris qu'il s'agit d'un problème de cast implicite.
Je pense avoir une explication partielle (voire partiellement fausse) : pour lui, les collections pourraient très bien contenir des éléments qui n'ont pas la propriété .Text ou .Checked, etc, et donc il a peur de devoir convertir ?
Comment contourner ce problème autrement qu'en supprimant l'option strict on ?
Merci d'avance pour votre aide !
PS : Au passage j'en profite pour poser une question vis-à-vis des collections.
Dois-je vraiment me taper le CollCB.Add() pour chaque Checkbox etc ? (j'en ai beaucoup) ou y a-t-il un moyen de les ajouter dans le même ordre que leur TabIndex ou je ne sais pas, afin de faire correspondre les indices dans les différentes collections sans avoir à rentrer un par un chaque élément correspondant dans la collection qui va bien ?
(Si quelqu'un a réussi à comprendre sans devoir relire, chapeau, mais au pire zappez cette question)
Partager