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

VB.NET Discussion :

[VB.net] Accéder à une variable public d'un formulaire depuis un autre formulaire


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut [VB.net] Accéder à une variable public d'un formulaire depuis un autre formulaire
    Bonjour,

    Je rencontre actuellement un soucis.

    j'ai un certain nombre de variable globale déclaré public dans un formulaire nommé Form1.

    Lorsque j'essaye d'accèder à la valeur d'une variable globale de form1 en faisant :

    Form1.nomdelavariable

    il semble y avoir un problème car quand je fait une compilation pas à pas, il "recharge complétement" form1 et bien sur repasse sur l'affectation des variable par défaut.

    Ma question est la suivante comment partager une variable, pour la rendre accessible sa valeur depuis deux formulaires distinct?

    merci d'avance pour votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Bonjour
    Tu peux passer ta variable en parametre lors que tu initialise ta nouvelle form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim frm2 as new frm2(var)
    Et dans ta form2 tu fais un new

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public sub new(ByRef var as type_variable)
    initializedComponent
    frm2.variablelocal = var
    End sub
    C'est tres basic comme code mais ca devrait aller

    En esperant t'avoir un peu aidé

    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    bonjour,

    en poursuivant mes recherches j'ai trouver un exemple utilisant les modules.

    Je l'utilisais deja pour partager des fonctions mais je n'avais pas tester pour les variables.

    Je vais tester tout d'abord avec les modules voir si ca fait ce que je veux.

    Par contre je ne connais pas les restrictions des modules.

    Si je n'y arrive pas avec cette méthode je testerai la tienne qui me parait un peu plus compliqué ....

    Merci

  4. #4
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Points : 252 372
    Points
    252 372
    Billets dans le blog
    121
    Par défaut
    Pour faire simple utilise un module pour toute tes variable globale.

    @++
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Ok, bah si ca marche avec les modules, tu poste le code stp, ca peut toujours etre utile

    Pour le passage de paramètre, parait que c'est plus propre!

    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  6. #6
    Membre actif Avatar de yroubag
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 224
    Points
    224
    Par défaut
    Salut,

    Il faut rester logique: si ta donnée en est une générale à toute l'application (ex: Nom de l'application), elle pourrait être effectivement dans un module global disponible à toute les forms de l'application. Par contre, si ta donnée est propre ta Form1 (ex: le titre de la Form), tu devrais récupérer l'instance en cours de ta form1 et accéder à ses propriétés publiques. Tu dis que ta form1 se "recharge complètement", c'est probablement parce que tu créés une nouvelle instance de la classe Form1, plutôt que récupérer l'instance en cours.
    Yroubag
    Bien poser les questions, c’est tout un art.
    Où tout dépend, bien sûr, de la réponse que l’on veut obtenir. -André Frossard

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour,

    Et merci pour vos réponses. En fait j'ai remarqué un truc bizarre.

    Je m'explique, dans mon projet je faisais déjà appel à certaine variable présent dans ma form principale depuis une form d'option.

    Mais je n'observe pas le même comportement à la compilation pas à pas. J'entends par la qu'il ne repasse pas dans Form1 pour recréer une nouvelle instance.
    Je viens de refaire le test. Quoiqu'il en soit étant pressé sur ce projet j'ai utilisé une autre méthode indépendante de ma question pour résoudre mon problème.

    Par contre j'aimerai savoir dans quel condition une nouvelle instance de la form principale est créé lorsque l'on tente de modifier une variable de la form principale et quel est la meilleur pratique concernant la gestion des variables d'une form depuis une autre form, car même si dans la première version du logiciel j'ai contourné le problème j'aimerai amélioré pour les versions futures la méthodologie d'accès à mes variables entre form de mon application.

    L'utilisation des modules fonctionnent, mais est-ce la meilleur solution.

    Pour créer un module, il suffit d'aller dans :
    - l'explorateur de solution
    - click droit Ajouter
    - Nouvel Elément
    - Et de choisir Module

    Ensuite dedans on peut créer des fonctions et des variables accessible depuis n'importe quel formulaire.

    Cependant je ne sais pas si il s'agit de la meilleur méthode.

    Il est vrai que si l'on considère un formulaire comme une classe, et il s'agit d'une classe, ce que l'on déclare en variable "globale" du formulaire représente des membres de la classe. Hors toutes variable d'une application n'est pas forcément une donner membre du formulaire.

    Je ne suis pas encore assez expérimenté, et aimerai avoir l'avis de développeur aguerrit en objet, parce qu'honnêtement je patauge encore pas mal.

    ++

  8. #8
    Membre actif Avatar de yroubag
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 224
    Points
    224
    Par défaut
    Voici quelques liens intéressants pour ce que tu veux faire...

    Structure de programme : programmation à trois couches
    http://plasserre.developpez.com/cours/vb-net/?page=poo4

    Développer une application en Visual Basic NET 2.0 (tutoriel pas à pas)
    http://khany.developpez.com/dotnet/vb.net/
    Yroubag
    Bien poser les questions, c’est tout un art.
    Où tout dépend, bien sûr, de la réponse que l’on veut obtenir. -André Frossard

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Plop

    et merci pour les 2 liens très intéressant en effet.

    d'autant que je travaille sur une application 3 Tier d'après la définition donnée :

    -Présentation => mon interface graphique
    -Calcul métier => traitement sur les absences et calcul
    -Accès base de donnée => requête à ma base de donnée

    Mais bon la ca va être dur de l'adapter à man application déjà développé.

    Quoique inconsciemment, je l'ai découpé un peu sur ce modèle car dans mon traitement :

    - Je récupére mes données
    - J'effectue mes traitements
    - Je génére mon fichier excel de résultat.

    J'utilise déjà des classes pour les structures de données.

    Si j'ai l'occasion de travaille sur une nouvelle version de cette application, le la traduirai en 3 tiers mais la c trop tard.... le projet rentrant en phase de test erf.

    encore merci

  10. #10
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 123
    Points
    123
    Par défaut
    Dans toutes mes applications, je créer un module pour mes variables ou fonctions qui seront utilisé par plusieurs de mes forms.
    Je n'ai jamais entendu dire que c'était une mauvaise méthode et même en cours de M1 on m'expliquait cette méthode.
    Rien de plus simple a réaliser et sa marche... donc pourquoi chercher une autre méthode

  11. #11
    Membre actif Avatar de yroubag
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 224
    Points
    224
    Par défaut
    ...pourquoi chercher une autre méthode...
    Tu vas comprendre lorsque tu vas tomber sur une valeur erronée dans ta variable et que celle-ci est affectée, par exemple, à 25 ou 50 places différentes, le tout réparti dans 5 différente Forms... là tu vas chercher... et comprendre qu'il y a des méthodes qui peuvent te compliquer la vie au départ pour te la simplifier par la suite.

    Personnellement, j'ai déjà dû travailler sur UNE SEULE classe, qui contenait 6000 lignes de code, 100 méthodes et 60 variables globales (sans même de GET/SET) qui étaient modifiées partout = L'ENFER. Je ne souhaite ça à personne.
    Yroubag
    Bien poser les questions, c’est tout un art.
    Où tout dépend, bien sûr, de la réponse que l’on veut obtenir. -André Frossard

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour,

    Je cherche à avoir une "bonne" méthodologie de programmation.

    Ainsi la maintenance du code sera moins compliqué enfin je pense.

    Et je pense que ca permettra d'éviter des bugs?

    Mais je suis encore pas mal paumé j'apprends à taton

    ++

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/10/2010, 14h34
  2. Réponses: 2
    Dernier message: 15/04/2010, 10h30
  3. Réponses: 15
    Dernier message: 30/04/2008, 16h50
  4. [VBA] taille max d'une variable public
    Par gigs dans le forum Général VBA
    Réponses: 9
    Dernier message: 23/11/2005, 15h27
  5. [VB.NET] Appeler une sub public dans un module de form
    Par SergeF dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/06/2004, 13h08

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