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

Windows Forms Discussion :

Instancier une form depuis une class passer en paramètre


Sujet :

Windows Forms

  1. #1
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut Instancier une form depuis une class passer en paramètre
    Bonjour,

    J'ai la procedure suivante qui doit me gerer l'affichage des forms mdi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     Public Sub ShowForm(ByVal FormCible As Form, ByVal FormDeBase As Form, ByVal FormParente As Form)
     
     
            If Not IsNothing(FormCible) Then
                If Not FormCible.IsDisposed Then
                    FormCible.WindowState = FormWindowState.Normal  
                    FormCible.BringToFront()  
                Else
                    FormCible = New FormDeBase
                    FormCible.MdiParent = FormParente
                    FormCible.Show()
                End If
            Else
                FormCible = New FormDeBase
                FormCible.MdiParent = FormParente
                FormCible.Show()
            End If
     
        End Sub
    Mon seul probleme est le New ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      FormCible = New FormDeBase
    Ca me donne FormDeBase : Type 'FormDeBase ' non défini.

    Je dois passer en paramètres 3 forms ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public fListeUsager As frmListeUsdager
    ShowForm(fListeUsager, frmListeUsdager,Me)
    Je ne sais pas instancier une form à partir d'une class passé en paramètre.
    Si quelqu'un saurait ?......
    Je vous remercie.

  2. #2
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Points : 319
    Points
    319
    Par défaut
    salut essaye un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim formCible as new Form
    formCible = formDeBase

  3. #3
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    je te remercie,
    avec le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dim formCible as new Form
    déclarer au sein de la procedure je perdrais la portée de cette variable qui contient un bouton affichant une autre form qui contient des références à cette variable que j'ai déclarer en PUBLIC avant l'appel de cette procedure....

  4. #4
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Points : 319
    Points
    319
    Par défaut
    yarf, pas claire ton truc, mais tu n'est pas obligé de faire dim FormCible as new form dans ta procedure, tu peut le faire ou tu veut dans la classe, apres tu fait FormCible = FormDeBase dans t

  5. #5
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Points : 319
    Points
    319
    Par défaut
    yarf, pas claire ton truc, mais tu n'est pas obligé de faire dim FormCible as new form dans ta procedure, tu peut le faire ou tu veut dans la classe, apres tu fait FormCible = FormDeBase dans ta procedure et ca devrait marché.

    Sinon faut que tu m'explique ce que t'a voulu dire a la fin car, sans ponctuation, c'est un peu chaud a comprendre...

  6. #6
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    l'erreur à disparue je n'avais pas bien compris je et j'ai fait
    FormCible = FormDeBase tout en gardant la déclaration en dehors de la procedure.
    Maintenant j'ai un probleme de logique et je dois faire les testes pour regler
    Sinon faut que tu m'explique ce que t'a voulu dire a la fin car, sans ponctuation, c'est un peu chaud a comprendre...
    Oui j'explique :
    En fait j'ai un systeme de menu qui doit afficher des forms mdi et cette procedure test si la form n'est pas creer alors elle l'a creer sinon si elle est réduite il l'a réaffiche.

    J'ai declarer les variable forms en public et au demmarage ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    Module StandartGénéral
        Public fListeUsager As New frmListeUsager
        Public fGenRelever As New frmGenRelever
     
        Public FrmMDI As mdiMain
     
        Sub Main()
     
     
            Application.Run(fListeUsager)
            Application.Run(fGenRelever)
            FrmMDI.ShowDialog()
        End Sub
     
    End Module
    Puisque l'erreur à disparue je viens de me rendre compte que dans la procedure FormCible au lieu de prendre fListeUsager elle à pour valeur frmListeUsager.......

  7. #7
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Points : 319
    Points
    319
    Par défaut
    Ne connaissant pas ton code sur le bout des doigts (note que j'en suis navré ^^), je me permet de te demander si maintenant ca marche ??? sinon peut tu mettre du code et expliquer clairement ton probleme (en commentant tes ligne le plus clairement possible stp)

  8. #8
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    oui pardon, alors avec en plus du code qui me demarre l'application et instancie les forms dans un module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Module StandartGénéral
        Public fListeUsager As New frmListeUsager
        Public fGenRelever As New frmGenRelever
     
        Public FrmMDI As mdiMain
     
        Sub Main()
     
     
            Application.Run(fListeUsager)
            Application.Run(fGenRelever)
            FrmMDI.ShowDialog()
        End Sub
     
    End Module
    L'appel de la procedure se fait dans un menu ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     Private Sub mnUsager_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnUsager.Click
    ShowForm(fListeUsager, frmListeUsager, Me)
    Me c'est la form principale qui contient le menu.

    Et initialement dans chaque menu il y a avait ce code qui m'affiche correctement mes forms :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    If Not IsNothing(FormCible) Then
                'Si on en a pas déjà disposé
                If Not FormCible.IsDisposed Then
                    FormCible.WindowState = FormWindowState.Normal  ' Optional
                    FormCible.BringToFront()  '  Optional
                Else
                    FormCible = FormDeBase
                    FormCible.MdiParent = FormParente
                    FormCible.Show()
                End If
            Else
                FormCible = FormDeBase
                FormCible.MdiParent = FormParente
                FormCible.Show()
            End If
    Etant donnée que ce code se répète je voulais en faire une procedure Voilà.
    Enfin j'espere avoir été clair et transmis sufisament de code pour que cela soit claire.

    Maintenant je crois que je dois deplacer ces variables et les mettre dans la form principale.
    Merci

  9. #9
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Points : 319
    Points
    319
    Par défaut
    Donc ca marche ???

    Sinon il te suffit de creer une procedure dans ta classe formPrincipal que tu appel test par exemple, dedans tu met le code qui test tes formulaires, et tu l'appel a chaque fois que tu as un choix dans ton fichier...

    en esperent avoir compris ce que tu voulait faire ... car je doit admettre qu'apres 8 heures de programmation, j'ai un peu de mal a tout comprendre..

  10. #10
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    oui ca marche !! pour le probleme que tu m'as résolu faisant l'objet du 1er post:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FormCible = New FormDeBase
    ca m'as débloquer merci !
    Sauf j'ai renconter un autre probleme et qui un probleme de logique (deplacement de code) et j'essayerais ce que tu m'as dis
    Sinon il te suffit de creer une procedure dans ta classe formPrincipal que tu appel test par exemple, dedans tu met le code qui test tes formulaires, et tu l'appel a chaque fois que tu as un choix dans ton fichier...
    Je te rendrais compte apres les tests

    Merci beaucoup

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

Discussions similaires

  1. Accès à une méthode d'une form depuis une autre autre form
    Par arngrimur dans le forum Windows Forms
    Réponses: 16
    Dernier message: 13/01/2012, 15h45
  2. Réponses: 6
    Dernier message: 10/06/2010, 15h31
  3. Réponses: 5
    Dernier message: 09/03/2007, 10h07
  4. Ouvrir une form depuis une class
    Par totoche dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/09/2006, 11h13
  5. Réponses: 3
    Dernier message: 16/01/2006, 16h02

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