Contourner le Late binding
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.
Code:
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 |
Voilà. Or lorsque j'ai l'option Strict on, il me parle de Late Binding.
J'ai bien compris qu'il s'agit d'un problème de cast implicite.
Je pense avoir une explication partielle (voire partiellement fausse :D ) : 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)