IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Disponibilité des instances d'objet sur tout un projet


Sujet :

C#

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Disponibilité des instances d'objet sur tout un projet
    Bonjour a tous,
    Je voudrai savoir comment faire pour instancier un objet d’une classe et qu’il soit disponible sur toute les Forms du projet.
    Quelques précisions s’imposent, je suis sous Visual studio 2010 j’utilise C# et mon projet est en Winform.
    Le problème est le suivant :
    Je crée une classe A et j’instancie un objet à partir de cette classe sur l’événement click d’un bouton qui se trouve sur la Form1.
    Je renseigne les valeurs des propriétés de l’objet jusque là aucun problème.
    Lorsque je tente de récupérer les valeurs des propriétés dans Form2 l’objet n’est pas disponible je suppose qu’il s’agit d’un problème de portée.
    Ma question comment rendre l’objet disponible sur la Form2.

    Merci pour votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    bonjour,

    Si c'est juste pour passer une instance de classe d'une fenêtre à une autre, il suffit de surcharger le constructeur de la 2ème fenêtre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            private ClassA mClassA = null;
     
            public Form2()
            {
                InitializeComponent();
            }
            // constructeur surchargé
            public Form2(ClassA instA)
            {
                InitializeComponent();
                mClassA = instA;
            }
    appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form2 fenForm2 = new Form2( oClassA );
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  3. #3
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Si tu as besoin d'une seule instance pour ce besoin dans toute ton application (plus exactement ton app-domain) à un instant t alors tu peux tout simplement créer une propriété statique dans la classe A:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class A
    {
        public static A CurrentInstance { get; set; }
     
        public string SomeProperty { get; set; }
    }
    Puis dans Form1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    A.CurrentInstance = new A
    {
        SomeProperty = "Hello!"
    };
    Et dans Form2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textBox.Text = A.CurrentInstance.SomeProperty;
    Une sorte de singleton, avec une instance mouvante, et pas de contraintes réelle d'unicité.

    Après si ce workflow concerne uniquement Form1 et Form2 il peut être plus propre de créer cette propriété sur l'une de ces deux classes afin de ne pas polluer tes entités métier, à supposer que A en fasse partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Form1 : Form
    {
        public static A CurrentInstance { get; set; }
    }
    Le principe restant strictement le même.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Merci
    Je vous remercie pour vos réponses rapides et précises.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2012] Récupérer la liste des instances SQL Server sur le réseau
    Par Invité dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/05/2015, 10h27
  2. Ajouter des étiquettes de colonnes sur toutes les feuilles du classeur
    Par Akane69 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/07/2013, 09h26
  3. Réponses: 12
    Dernier message: 16/11/2011, 17h41
  4. Réponses: 5
    Dernier message: 27/10/2009, 16h46
  5. [1.1] Comment lister l'ensemble des instance d'objets en cours ?
    Par maitrebn dans le forum Framework .NET
    Réponses: 2
    Dernier message: 25/09/2006, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo