Appeler une ListBox dans n'importe qu'elle class

Signaler
Messages postés
65
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
25 mars 2010
-
Messages postés
5
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
7 juin 2011
-
BOnjour,

J'ai une listbox dans ma fenetre principal et j'aimerai pouvoir la mettre à jour dans n'importe qu'elle autre class sans pour autant devoir la passer en parametre dans chaque class.... Le top du top serai aussi de pouvoir l'appeler meme si une des class est threadée.
Y a t'il un moyen?

Merci :)

5 réponses

Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
44
Salut

Tu peux mettre ton objet en statique (donc objet dépendant de la classe et non de l'instance) et public pour y avoir accès depuis n'importe quel endroit. Cependant, attention aux accès concurrents en cas de multithread.

En gros, dans ta classe dans laquelle se trouve ta form :

private static ListBox _maListBox;
private static readonly object _maListBoxThreadSafe = new object();

public static ListBox MaListBox
{
    get
    {
        lock(_maListBoxThreadSafe)
        {
            return _maListBox;
        }
    }
}

public Form1()
{
    InitializeComponents();
    Form1._maListBox = maListBox;
}



puis, à n'importe quel endroit où tu veux accéder à ta listbox :
Form1.MaListBox.Items.Add("blablabla");


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
5
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
7 juin 2011

bonjour,

une question de newbies:

comment on fait pour passer une listBox en parametre?
J'ai essayé en utilisant les references mais je dois mal m'y prendre, je debarque totalement en c#

merci beaucoup
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
44
@balthapadawan :
C'est très simple : ListBox est une classe. Elle est donc forcément transmise par référence. Donc elle se passe de la manière la plus simple qui soit :

maMethode(maListBox);

public void maMethode(ListBox maListBox)
{
    //...
}


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
5
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
7 juin 2011

Nickel!!!

Du coup je viens de mieux comprendre et utiliser ton code précédent et tout fonctionne bien...

merci pour ta réponse rapide et concise, krimog, et désolé pour la question très bateau...