Assignation explicite dans une boucle if: problème
Bonjour,
Je souhaite créer une procédure dans laquelle j'envoie comme paramètre un objet (ListBox ou Combobox). Car le traitement est identique que ce soit un ListBox ou un ComboBox
Lorsque la procédure reçoit l'objet, je dois l'assigner explicitement à son type.
Exemple qui fonctionne:
Code:
1 2 3 4 5 6 7
|
public static void Test(Object form_box)
{
ListBox form_box1 = (ListBox)form_box;
int a=form_box1.Items.Count;
} |
A priori, je ne sais pas si Objet est un ListBox ou un ComboBox, donc je fais un test pour vérifier son type.
Le problème provient de la boucle if qui m'impose de déclarer l'objet en dehors de la boucle.
Exemple qui ne fonctionne pas:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
public static void Test(Object form_box)
{
Object form_box1 = null;
// ComboBox form_box1 = null;
if (form_box is ListBox)
{
form_box1 = (ListBox)form_box;
}
else if (form_box is ComboBox)
{
form_box1 = (ComboBox)form_box;
}
else
{
MessageBox.Show("Error_Type");
}
int a=form_box1.Items.Count;
} |
MErci d'avance pour votre aide !
Créer une assignation explicite dépendante d'une condition if: problème
Bonjour
Merci bcp. pour vos deux propositions.
Super idée d'envoyer en paramètre la Collection des Items. Je ne connaissais pas cette possibilité.
Mais dans mon cas, le traitement que je veux faire ensuite, c'est entre autre de remplir la ListBox ou la ComboBox...
Exemple:
Code:
1 2 3 4 5 6
| string[] Fichiers = Directory.GetFiles(myDir, Filtre);
foreach (string Fichier in Fichiers)
{
Console.WriteLine(Fichier);
form_box1.Items.Add(Fichier);
} |
Dès lors, ca ne suffit pas la Collection des items. Il faut envoyer l'objet complet
Concernant la première proposition, quitte à créer deux variables avec 2 traitements spécifiques, alors autant directement créer deux procédures indépendantes.
Mon souhait est justement de n'avoir qu'une seule variable (et donc un seul traitement commun) que la variable d'entrée soit une ListBox ou une ComboBox
Si vous avez d'autres idées...
MErci d'avance,