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 :

Passage de paramètre à l'appel d'un Forms


Sujet :

VB.NET

  1. #1
    Membre du Club Avatar de sibama
    Profil pro
    Inscrit en
    Août 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 147
    Points : 55
    Points
    55
    Par défaut Passage de paramètre à l'appel d'un Forms
    Bonjour,

    j'ai un Form (F) qui peut être appelé à partir de plusieurs autres Forms et affiché plusieurs fois en même temps avec des données différentes.
    Je dois mettre à jour un DGV contenu dans F à partir d'une donnée qui vient du Form appelant.
    Dans un premier temps, j'ai répété dans chaque Form appelant le code qui met à jour le DGV de F avant de faire le "F.show()". Ca marche mais c'est un peu lourd dingue.
    Actuellement, dans le Form appelant je mets à jour une variable globale et dans le LOAD de F, je mets à jour le DGV. Ca marche mais je suis pas sur que cela soit super élégant.
    Existe-t-il un manière de passer un paramètre au moment de l'appel de F par "F.show()", un truc dans le genre paramètre pour une Function, "F(monParamètre as string)"?
    Ou alors la technique avec la variable globale n'est-elle pas si mauvaise que ça?

    Ce n'est pas parce que l'on allume la bougie de quelqu'un avec sa lanterne que l'on se prive de lumière.
    Ce n'est pas parce que l'on allume la bougie de quelqu'un avec sa lanterne que l'on se prive de lumière.

  2. #2
    Membre du Club Avatar de eikeshi
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 73
    Points : 61
    Points
    61
    Par défaut
    j'ai un Form (F) qui peut être appelé à partir de plusieurs autres Forms et affiché plusieurs fois en même temps avec des données différentes.
    Es-tu obligé de l'appeler à partir de plusieurs Forms ?
    Sinon pour le passage de paramètre, c'est inutile, tu ne gagnerais rien de plus que ce soit en temps de traitement ou en propreté du code. La variable globale me paraît correcte.
    Il y a des jours avec, il y a des jours sans et les jours sans, il faut faire avec.

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    il est possible de passer une variable avec f.show en faisant une sub show(param) dans le form en question qui appelle f.show après avoir traité le paramètre

    il est en théorie mieux de faire un constructeur paramétré
    comme ca tu fais dim f as new maform(monparam) puis f.show
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre du Club Avatar de sibama
    Profil pro
    Inscrit en
    Août 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 147
    Points : 55
    Points
    55
    Par défaut
    Tout d'abord, merci à tous les 2 de votre réponse.

    eikeshi: Oui, je suis "obligé" de l'appeler depuis plusieurs Form, c'est même tout l'intéret de la chose, il me permet de "naviguer" entre les différentes utilisations/représentations de la donnée passée en paramètre.

    Sperot51: Si je te suis bien, c'est dans mon Form F que je crée une sub show(param)? Ensuite dans cette sub, je travaille mon param (dans mon cas la mise à jour des données du DGV), puis je lance le F.show (qui déclenchera l'apparition de mon Form et je suppose seulement à ce moment là lancera l'exécution du code contenu dans le Load du Form).
    Par contre quand tu écris:
    comme ca tu fais dim f as new maform(monparam) puis f.show
    J'avoue être un peu perdu entre le maform(monparam) qui pour moi devrait être F(monparam), f que je pourrais appeler Toto et donc le Toto.show qui doit appelr la sub show qui elle-même appelle le .show qui lance l'affichage, ais-je bien compris?

    Ce n'est pas parce que l'on allume la bougie de quelqu'un avec sa lanterne que l'on se prive de lumière.
    Ce n'est pas parce que l'on allume la bougie de quelqu'un avec sa lanterne que l'on se prive de lumière.

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    il faut faire la différence entre une classe et une variable de type form


    soit tu fais la surcharge du Show() soit tu utilises un constructeur paramétré de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class MonForm
    inherits Form
     
      private sub new
        initializecomponents
      end sub
     
      public sub new (param as quelquechose)
        initializecomponents
        'traitement du param
      end sub
    end class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim f as new MonForm(valeur du param)
    f.show
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre du Club Avatar de sibama
    Profil pro
    Inscrit en
    Août 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 147
    Points : 55
    Points
    55
    Par défaut
    Super sperot51, ça marche trés bien.

    J'ai essayé comme tu as écrit et sans le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      private sub new
        initializecomponents
      end sub
    et en fait sa marche aussi bien sans (en fait je comprenais (et ne comprend toujours pas) pourquoi il faudrait ce bout de code...).

    Merci encore sperot51, je passe le sujet en RESOLU et je reprend 2 autres Form de mon projet selon le même principe.

    Ce n'est pas parce que l'on allume la bougie de quelqu'un avec sa lanterne que l'on se prive de lumière.
    Ce n'est pas parce que l'on allume la bougie de quelqu'un avec sa lanterne que l'on se prive de lumière.

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    le bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     private sub new
        initializecomponents
      end sub
    sert à obliger les gens à instancier ta form avec le paramètre

    car toute les classes ont un public sub new implicte, on peut l'écrire et donc le rendre privé
    (les form ont en plus besoin de initializecomponents dedans)


    tu verras que sans tu peux écrire
    dim f as new monform
    f.show
    alors qu'avec ce bout de code en plus il te soulignera en erreur et t'obligeras à remplir le paramètre du sub new paramétré
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre du Club Avatar de sibama
    Profil pro
    Inscrit en
    Août 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 147
    Points : 55
    Points
    55
    Par défaut
    Ben justement Sperot51, c'est l'inverse:
    Si je laisse la sub new(), il accepte la déclaration de mon dim f as new monform avec ou sans paramètre, tandis que si je l'enlève, je suis obligé de mettre le paramètre.

    N'est-ce d'ailleur pas logique, car si je laisse la sub new(), est-ce que ce n'est pas comme un genre de "surcharge" du new où du fait, j'autorise à la fois avec paramètre et sans?

    A tout hazard, je suis en vb2008 et l'instruction exacte est initializecomponent(), je sais pas si ça change quelque chose.

    Ce n'est pas parce que l'on allume la bougie de quelqu'un avec sa lanterne que l'on se prive de lumière.
    Ce n'est pas parce que l'on allume la bougie de quelqu'un avec sa lanterne que l'on se prive de lumière.

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

Discussions similaires

  1. [AC-2010] Passage de paramètre pour appel de procédure
    Par Pago283 dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/01/2013, 15h48
  2. Passage de paramètre et appel de fonction de dessin
    Par Naezys dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 28/10/2012, 18h02
  3. passage de paramètre autmatique entre handle de form ?
    Par BuzzLeclaire dans le forum Composants VCL
    Réponses: 2
    Dernier message: 11/02/2009, 14h32
  4. Réponses: 13
    Dernier message: 22/10/2008, 16h20
  5. Passage de paramètres et appel de propriété
    Par zesamoth dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/06/2008, 15h43

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