none
comment utiliser un evariable qui a été declaré dans une autre form RRS feed

  • Question

  • bonjour, bref j'ai un programme possédant Trois Windows Form (1;2;3)

    j'ai declaré des variable globaux dans la form1 et j'aimerai pouvoire les reutilisés dans la form3

    comment pourais je procédé??

    cordialement

    vendredi 2 juillet 2010 16:25

Réponses

  • static class globals

    {

       public static string toto;

    }

     

    class Form1 : Form

    {

    ...

    void OnClick()

    {

       globals.toto = titi;

    }

    ...

    }

     

    class Form2 : Form

    {

    ...

    void func()

    {

       var toto = globals.toto;

    }

    ...

    }


    Paul Bacelar, Ex - MVP VC++
    • Marqué comme réponse Alex Petrescu vendredi 9 juillet 2010 07:45
    vendredi 2 juillet 2010 17:59
  • Je pense avoir compris votre question.

    Si vous reprenez mes solutions et mon exemple, il faut, pour la maintenabilité du code, que les forms ne se connaissent pas.

    Donc, dans mes solutions, les données dont stockées dans une classe à part des formulaires, ainsi, une modification dans un formulaire n'impactera pas les autres formulaires.

    Les variables ne doivent pas être déclarées dans form1, elles peuvent être modifiées ou initialisées dans form1.


    Paul Bacelar, Ex - MVP VC++
    • Marqué comme réponse Alex Petrescu vendredi 9 juillet 2010 07:45
    lundi 5 juillet 2010 08:52

Toutes les réponses

  • Quand le modèle MVC vous manque ;-].

     

    A l'arrache :

    1- créez une classe simple dont une instance contiendra les données "globales", créez une instance de cette classe au démarrage de l'application et remplissez une propriété de chaque Form avec cette instance.

    2- créez une classe n'ayant que des propriétés statiques contenant chacun les données "globales", les forms pourront y accéder directement via le nom de la classe (donc sans instance d'objet)

    3- Design Patern Singleton avec une classe comme en 1.

     

    Mais les 3 méthodes sont toutes dans la catégorie à l'arrache car une application doit toujours séparer l'IHM du traitement, et le traitement de la gestion des données. MVC


    Paul Bacelar, Ex - MVP VC++
    vendredi 2 juillet 2010 16:45
  • Il faut que ta variable ne soit pas "private" mais "public" (le mot qui devant dans la déclaration de la variable).

    Bonne chance !!

     

    • Proposé comme réponse clt45 vendredi 2 juillet 2010 17:28
    vendredi 2 juillet 2010 17:28
  • bonjour, merci de votre aide mais il se trouve que je vient tout juste de débuter avec ce language

    donc si vous avez des exemples? ils seront les bien venue

    cordialement

    vendredi 2 juillet 2010 17:46
  • static class globals

    {

       public static string toto;

    }

     

    class Form1 : Form

    {

    ...

    void OnClick()

    {

       globals.toto = titi;

    }

    ...

    }

     

    class Form2 : Form

    {

    ...

    void func()

    {

       var toto = globals.toto;

    }

    ...

    }


    Paul Bacelar, Ex - MVP VC++
    • Marqué comme réponse Alex Petrescu vendredi 9 juillet 2010 07:45
    vendredi 2 juillet 2010 17:59
  •  

    Oui, bonjour merci des réponses que vous m'avez soumis (surtout l'exemple "mithik" mais très claire) mais en faite je me suis exprimé mal:

    j'ai trois form 1,2et 3

    après j'ai form1.cs /form2.cs/form3.cs

    donc comment je pourrais procédé pour pouvoir utilisé les variable que j'ai déclare dans from1.cs dans les deux autres form?? tel est la vrai question

    je suis navrais de cette mal entendue

    cordialement.

     

    dimanche 4 juillet 2010 09:14
  • Je pense avoir compris votre question.

    Si vous reprenez mes solutions et mon exemple, il faut, pour la maintenabilité du code, que les forms ne se connaissent pas.

    Donc, dans mes solutions, les données dont stockées dans une classe à part des formulaires, ainsi, une modification dans un formulaire n'impactera pas les autres formulaires.

    Les variables ne doivent pas être déclarées dans form1, elles peuvent être modifiées ou initialisées dans form1.


    Paul Bacelar, Ex - MVP VC++
    • Marqué comme réponse Alex Petrescu vendredi 9 juillet 2010 07:45
    lundi 5 juillet 2010 08:52
  • Bonjour jéMarley,
    Si tu as 3 formulaire, c'est comme si t'avait 3 objets différents, donc, il faut dans chacun des formulaires, créer des propriétés pour les variables que vous avez déclarez, exemple:
    propriété pour la variable : int x

    void int X
    {
        get{return this.x;}
        set{this.x=values;}


    ^^

     

     

     

    lundi 5 juillet 2010 15:45
  • Maintenant, il faudra juste que jéMarley fournisse une référence de chaque Form à chacune des autres.

    2*3 initialisations en plus, cool. Et avec quatre Froms, 3*4 initialisations en plus, encore plus cool.

    Si vous voulez programmer comme un sagouin, mais feignant, utilisez des propriétés "static", cela vous évitera ces passages de références entre Form. Mais le jour où vous aurez plusieurs Forms d'une même classe, vous allez pleurer.

    Faites donc une classe distincte avec vos données, qui sera visible par toutes vos Forms.


    Paul Bacelar, Ex - MVP VC++
    lundi 5 juillet 2010 18:43
  • bonjour,et je vous remerci tous et toute de m'avoir aidé .

    vous savez je vient de débuter dans cette language donc je vais me facilité la vie,je vais faire en sorte que chaque form est accès aux donnés (les declarations vont être de simple copier collé) car j'ai que 3 form mais le jour ou j'aurai des dixaine de form je trouverais un autre moyen.

    cordialement.  

    mardi 6 juillet 2010 07:40
  • Faites des statics alors :

     

    public class form1 : ...
    {

    ...

    public static int X
    {
        get;set;
    }

    ...

    }


    Paul Bacelar, Ex - MVP VC++
    mardi 6 juillet 2010 09:27
  • Bonjour,

     

    Je vous remercie à tous pour les réponses. JeMarley, je vous prie de marques la solution qui vous a été utile.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

     

    mercredi 7 juillet 2010 08:17