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 :

Recuperer toutes les instances d'un formulaire


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 65
    Points : 36
    Points
    36
    Par défaut Recuperer toutes les instances d'un formulaire
    Bonjour à tous,

    j'ai un petit soucis de 3 fois rien du tout mais qui me pompe pas mal parce que je ne vois pas par où attaquer.

    En gros lorsque je clique sur un bouton voici ce qu'il se passe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim fic As FormFicheIndividuelle = New FormFicheIndividuelle
    fic.idSalarieUtilisateur = idSalarieUtilisateur
    fic.idSalarie = ListViewResultatRecherche.SelectedItems(0).Text
    fic.Show()
    Or j'aimerais que s'il existe déjà une FormFicheIndividuelle avec le même idSalarie, il me la focus au lieu de me la créer.

    En gros j'aimerais pouvoir récuperer toutes les instances de FormFicheIndividuelle et comparer leur attribut idSalarie.

    Je vous remercie d'avance pour votre precieuse aide.

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Le plus simple est de stocker les réfèrences à tes formulaires au moment où tu les instancies, non ?

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 176
    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 176
    Points : 25 118
    Points
    25 118
    Par défaut
    il y a plusieurs possibilité

    soit tu passes en revues toutes les fenetres ouvertes avec for each frm as system.windows.form in System.Windows.Forms.Application.OpenForms
    if typeof frm is taform alors test si id_machin = ...



    ou alors

    tu te créés toi meme une collection de feuille
    sur ta form, tu fais un shared col as new system.collections.generic.list(of taform)

    et dans le sub new tu fais col.add(me) enfin faut pas le faire dans le sub new, car me est pas encore vraiment existant, faut le faire dans me.handlecreated plutot

    et apres tu fait for each frm as taform in taform.col
    if frm.id_machin = ...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    Moi aussi le moyen de faire appel au typeof me séduit mais le problème réside dans le fait que l'id_machin n'est pas commun à toute les forms donc je ne peut pas utiliser frm.id_machin.

    Peut-être y a-t'il un moyen de récupérer les attributs de frm en passant le nom en paramètre. Je ne m'y connais pas assez en vb.net pour connaître ce genre de manipulation.

    BlueDeep, si j'utilise ta méthode, où dois-je créer ma liste de fiches individuelles?

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 176
    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 176
    Points : 25 118
    Points
    25 118
    Par défaut
    excuse j'ai en effet oublié un truc

    une fois que tu es sur que ta feuille est du bon type
    tu fais ctype(frm,taform).idmachin


    le ctype est bien pratique, il permet aussi de caster sur des interfaces pour avoir accès à certaines fonctions sur des objets complexes ...

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    Alors voila ce que ça donne

    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
    Dim ficheOuverte As Boolean = False
                For Each frm As System.Windows.Forms.Form In System.Windows.Forms.Application.OpenForms
                    If TypeOf frm Is FormFicheIndividuelle Then
                        If CType(frm, FormFicheIndividuelle).idSalarie = ListViewResultatRecherche.SelectedItems(0).Text Then
                            frm.Focus()
                            ficheOuverte = True
                        End If
                    End If
                Next
                If ficheOuverte = False Then
                    Dim nouvelleFrm As FormFicheIndividuelle = New FormFicheIndividuelle
                    nouvelleFrm.idSalarieUtilisateur = idSalarieUtilisateur
                    nouvelleFrm.idSalarie = ListViewResultatRecherche.SelectedItems(0).Text
                    nouvelleFrm.Show()
                End If
    Et ça fonctionne à la presque perfection car le focus ne fonctionne pas lorsque la form est minimisée. Et je ne trouve pas la méthode qui permet de repérer si c'est le cas et de la restaurer le cas échéant.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    Trouvé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If frm.WindowState = FormWindowState.Minimized Then
                                frm.WindowState = FormWindowState.Normal
                            End If
    Et le tour est joué.
    Merci à sperot51 et à Bluedeep pour leur aide salvatrice

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 176
    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 176
    Points : 25 118
    Points
    25 118
    Par défaut
    roh quand meme !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       If frm.WindowState = System.Windows.Forms.FormWindowState.Minimized Then
                frm.WindowState = System.Windows.Forms.FormWindowState.Normal
        End If

    edit : croisage de reply

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    Désolé dans l'excitation du moment...

    Encore merci

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 01/12/2005, 17h44
  2. [MFC] Recuperer tout les control d'un CDialog
    Par mickaelguilbert dans le forum MFC
    Réponses: 6
    Dernier message: 11/08/2005, 11h04
  3. fichier ini -> recuperer toute les sections
    Par abignon dans le forum MFC
    Réponses: 2
    Dernier message: 08/04/2004, 18h46
  4. Réponses: 3
    Dernier message: 04/02/2004, 18h35

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