VB.NET: La collection Items (Add, Remove, Clear, ...) pour Control !!!!!
mehdi146
Messages postés8Date d'inscriptionmardi 8 mars 2005StatutMembreDernière intervention19 mai 2005
-
19 mai 2005 à 15:18
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 2011
-
19 mai 2005 à 22:05
Bonjour,
Je travaille sur la migration d'un logiciel de VB6 à VB.NET.
Je résume le problème :
En VB6, lorsque je déclare un contrôle dont je ne connais pas le type (Dim Ct As Control), ce dernier possède les propriétés AddItem, RemoveItem, ListCount, Clear, ... quel que soit le type de ce contrôle (ComboBox, ListBox, TextBox, Label, ...).
En VB.NET, Les équivalents de ces propriétés sont Add, Remove, Count et Clear qui se trouvent tous regrouper dans la collection "Items".Cependant cette collection Items n'est pas un membre de System.Windows.Forms.Control mais seulement de ListBox et ComboBox. Le problème est donc que lorsqu'on ne connaît pas le type du contrôle sur lequel on travaille, on ne peut pas utiliser la collection "Items" et donc on ne peut pas utiliser les propriétés citées auparavant.
Voici un exemple:
Supposons qu'on ait une fonction qui a pour paramètre cb qui est déclaré comme étant un contrôle (cb As System.Windows.Forms.Control) car on ne connait pas son type. Je désire faire :
If
TypeOf cb Is System.Windows.Forms.ComboBox Then
cb.Visible =
True
cb.Items.Clear()
End If
If TypeOf cb Is System.Windows.Forms.Label Then
cb.Visible = True
cb.Text = ""
End If
Le problème est que comme j'ai déclaré cb en tant que contrôle alors Items n'est pas un membre de cb et je ne peux donc pas faire " cb.Items.Clear() " .
Voilà, j'espere que j'ai été assez clair. Si vous avez la moindre idée de comment résoudre ce problème, n'hesitez surtout pas à m'en faire part.
mehdi146
Messages postés8Date d'inscriptionmardi 8 mars 2005StatutMembreDernière intervention19 mai 2005 19 mai 2005 à 15:57
Je voudrais rajouter que pour d'autres exemples moins complexe, le problème se pose quand même.
Je m'explique : Comme je l'ai dit précédemment, la collection Items appartient aux 2 classes ComboBox et ListBox. Supposons que maintenant j'ai une fonction dont le paramètre est un contrôle mais qu'on sait que ce contrôle est soit un ComboBox soit un ListBox. J'ai réussit à trouver une classe qui je cite "Fournit une implémentation commune pour les classes ListBox et ComboBox". Cette classe est System.Windows.Forms.ListControl.
Malheureusement, même si je déclare mon contrôle en tant que ListControl, mon problème n'est pas résolu pour autant car Items n'est pas membres de System.Windows.Forms.ListControl !!!!!!!!!!!!!!!!