none
Portée de variable

    Question

  • Bonjour

    J'ai une WindowForm déclarée avec une variable publique

     public partial class FormGestionToponymes : Form
        {

    public  List<Toponyme> ListeToponymesErrones = new List<Toponyme>();

    }

    et un Classe 

    Public class Toponyme

    {

    }

    J'ai besoin de faire appel à la liste ListeToponymesErrones  dans la class Toponyme mais elle n'est pas reconnue.

    Comment faire ?

    Merci

    Bernard


    Bernard Bouree

    jeudi 20 juillet 2017 14:34

Réponses

  • Bonjour,

    Vous pouvez définir plusieurs constructeurs.

    class Toponyme
    {
       List<Toponyme> m_LstTop;

      public Toponyme()
     {
     }

      public Toponyme( List<Toponyme> p_LstToponyme)
     {
       m_LstTop = p_LstToponyme;
     }
    }

    Vous pouvez définir la liste dans le constructeur du formulaire FormGestionToponymes

    partial class FormGestionToponymes : Form
    {
          private List<Toponyme> ListeToponymesErrones;
          Toponyme m_Toponyme;

        FormGestionToponymes ()  
       {
            ListeToponymesErrones = new List<Toponyme>();
            m_Toponyme = new Toponyme(ListeToponymesErrones);
       }

    }

    Votre liste est accessible depuis le formulaire et dans la classe Toponyme.

    Cordialement

    Gérard

    • Marqué comme réponse BernardBouree jeudi 20 juillet 2017 16:57
    jeudi 20 juillet 2017 14:50

Toutes les réponses

  • Bonjour,

    Vous pouvez définir plusieurs constructeurs.

    class Toponyme
    {
       List<Toponyme> m_LstTop;

      public Toponyme()
     {
     }

      public Toponyme( List<Toponyme> p_LstToponyme)
     {
       m_LstTop = p_LstToponyme;
     }
    }

    Vous pouvez définir la liste dans le constructeur du formulaire FormGestionToponymes

    partial class FormGestionToponymes : Form
    {
          private List<Toponyme> ListeToponymesErrones;
          Toponyme m_Toponyme;

        FormGestionToponymes ()  
       {
            ListeToponymesErrones = new List<Toponyme>();
            m_Toponyme = new Toponyme(ListeToponymesErrones);
       }

    }

    Votre liste est accessible depuis le formulaire et dans la classe Toponyme.

    Cordialement

    Gérard

    • Marqué comme réponse BernardBouree jeudi 20 juillet 2017 16:57
    jeudi 20 juillet 2017 14:50
  • J'ai besoin de faire appel à la liste ListeToponymesErrones  dans la class Toponyme mais elle n'est pas reconnue.

    Bonjour Bernard,

    Si vous avez besoins d'acceder à la liste ListToponymesErrones dans la classe Toponyme, il faut que cette liste soit membre de la classe Toponyme.

    public class Toponyme
    {
        private List<Toponyme> _lstToponymesErrones;
    
        public IEnumerable<Toponyme> ToponymesErrones
        {
            get { return _lstToponymesErrones; }
            set { _lstToponymesErrones = value.ToList(); }
        }
    }
    

    Pour initialiser la liste faites le dans le constructeur de la Form

    partial class FormGestionToponymes : Form
    {
        Toponyme _toponyme;
    
        public FormGestionToponymes()
        {
            _toponyme = new Toponyme
            {
                ToponymesErrones = new List<Toponyme>()
            }; 
        }
    }
    


    Maintenant si la liste ListeToponymesErrones doit être la même dans tous les instances de la classe Toponyme, je préconise quelque chose comme ça:

    public class Toponyme
    {
        public static IEnumerable<Toponyme> ToponymesErrones { get; }
    
        static Toponyme()
        {
            ToponymesErrones = new List<Toponyme>();
        }
    
        public void FonctionUtilisantLaListe()
        {
            var toponymesErrones = ToponymesErrones.ToList();
        }
    }
    

    Et pour l'utiliser dans la Form

    partial class FormGestionToponymes : Form
    {
    
        public void FonctionUtilisantLaListe()
        {
            var toponymesErrones = Toponyme.ToponymesErrones.ToList();
        }
    }
    
    Cordialement,

    • Marqué comme réponse BernardBouree jeudi 20 juillet 2017 16:57
    • Non marqué comme réponse BernardBouree samedi 22 juillet 2017 08:19
    jeudi 20 juillet 2017 16:14
  • Bonjour

    Merci beaucoup!

    Bernard


    Bernard Bouree

    jeudi 20 juillet 2017 16:57
  • Bonjour

    J'ai un petit soucis d'implantation!

    En reprenant votre exemple je n'ai pas d'erreur mais la liste ne se remplit pas.

    toponymesErrones.Count reste toujours à zéro.

    Merci

    Bernard

    public void EnregistrerToponymeEronne(Toponyme top)
            {
                var toponymesErrones = Toponyme.ToponymesErrones.ToList();
                if (!(top == null) && top.Erreur.Err)
                {
                    toponymesErrones.Add(top);
                }
            }

    private void ListerToponymesErrones()
            {
                var toponymesErrones = Toponyme.ToponymesErrones.ToList();

                foreach (Toponyme topo in toponymesErrones)
                {
                    lbToponymes.Items.Add(topo.ToString(true));
                }
            }



    Bernard Bouree

    samedi 22 juillet 2017 08:26