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

  1. #1
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut parcourir tous les usercontrols du projet pour agir sur celui qui contient une chaine spécifiée dans son nom
    Bonjour,

    a la base j'ai une form (form1), des boutons ("exemple1", "exemple2"...), des usercontrols (exemple1_UC, exemple2_UC,...), à chaque bouton correspond un usercontrol (par ex, au bouton "exemple1" va correspondre le usercontrol exemple1_UC...)

    je cherche à insérer dans ma form le usercontrol dont le nom contient la valeur de la propriété .text du bouton cliqué. Je sais comment récupérer cette valeur dans une variable en utilisant le sender, mais je galère pour que le clic entraine l'insertion de l'usercontrol dont le nom contient cette valeur.

    parcourir tous les usercontrols du projet pour agir sur celui qui contient une chaine spécifiée dans son nom me permettra sans doute de résoudre le pb, mais est-ce possible ?? si oui comment faire ??

    Merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Oui mais c'est pas forcément une bonne idée
    Que souhaites tu faire?

  3. #3
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut
    bonjour,

    merci d'avoir pris la peine d'étudier mon pb..
    Je viens d'apporter des précisions sur ce que je veux faire en modifiant l'énoncé.

    Est-ce que tu comprends ou je veux en venir ??

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2012
    Messages : 37
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par veens777 Voir le message
    Bonjour,

    a la base j'ai une form (form1), des boutons ("exemple1", "exemple2"...), des usercontrols (exemple1_UC, exemple2_UC,...), à chaque bouton correspond un usercontrol (par ex, au bouton "exemple1" va correspondre le usercontrol exemple1_UC...)

    je cherche à insérer dans ma form le usercontrol dont le nom contient la valeur de la propriété .text du bouton cliqué. Je sais comment récupérer cette valeur dans une variable en utilisant le sender, mais je galère pour que le clic entraine l'insertion de l'usercontrol dont le nom contient cette valeur.

    parcourir tous les usercontrols du projet pour agir sur celui qui contient une chaine spécifiée dans son nom me permettra sans doute de résoudre le pb, mais est-ce possible ?? si oui comment faire ??

    Merci pour votre aide.
    Je ne comprend pas tout, tes usercontrol sont déjà créer mais non visible et tu veux afficher celui qui correspond au bouton que tu clique?

  5. #5
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut
    bj,

    désolé si je suis pas très claire je viens juste de découvrir ce qu'est un usercontrol...

    oui en fait je les ai crée en mode design en cliquant sur "ajouter un nouvel élément" puis "control utilisateur" et j'ai insérer divers controls...

    a la base je bosse avec un tabcontrol, chaque tabpage est une sorte de fenêtre de paramétrage... mais on ma plutot conseillé d'utiliser à la place des tabpages, des controls utilisateurs, de fait avant le clique sur un bouton entrainait la selection d'un tabpage précis à présent je souhaite que le clique sur un bouton entraine l'affichage de l'usercontrol dans ma form...

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2012
    Messages : 37
    Points : 48
    Points
    48
    Par défaut
    D'accord, est ce que tes usercontrols ont le même "design"? J'entends par là, est ce que tes UCs possèdent les mêmes contrôles?
    Si oui, tu devrais plutôt voir pour ne construire qu'un seul uc et et lui attribuer un constructeur.
    Dis moi, si tu ne me suis pas inh ! Parce que jene sais pas si j'ai bien compris ton pb, même si je pense avoir compris .

  7. #7
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut
    en fait je ne veux pas afficher le usercontrol, je veux l'insérer dynamiquement à un endroit précis de ma form...

    insérer dynamiquement ne me pose pas de pb, mon pb c'est comment retrouver un usercontrol en vérifiant si son nom contient une chaine spécifique..

    je pense que parcourir tout les usercontrol de mon projet peut être une solution mais d'une part je ne sais pas si c'est possible d'autre part je ne sais pas si c'est une bonne idée..

  8. #8
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut
    non chaque usercontrol à un design bien propre à lui...

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2012
    Messages : 37
    Points : 48
    Points
    48
    Par défaut
    Ha d'accord. Et bien, alors personnellement je ne voit pas comment parcourir les UCs. Mais tu as défini qu'une seule fonction pour tout tes boutons? Sinon à ta place je ferais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Select Case CType(sender, Button).Text
         Case "exemple1"
              Dim uc as new exemple1_uc
         Case "exemple2"
              Dim uc as new exemple2_uc
         [...] 
    End Select
    Je ne voit pas trop comment faire autrement. Je te cache pas que je peux etre, encore à côté de la plaque, si c'est ça, montre un peu de code

  10. #10
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut
    biensure je pourrai pour chaque bouton écrire le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Private Sub exemple1_TSMI_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles exemple1_TSMI.Click
            Me.Controls.Add(New exemple1_UC)
        End Sub
     
        Private Sub exemple2_TSMI_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles exemple2_TSMI.Click
            Me.Controls.Add(New exemple2_UC)
        End Sub
    ....

    mais je voudrais savoir s'il n'y a pas un moyen de simplifier car je risque d'en avoir une centaine....

    merci pour votre aide.

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2012
    Messages : 37
    Points : 48
    Points
    48
    Par défaut
    Je voit mieux.. J'ai un peu de mal ce soir, désolé ! Arrives-tu déjà, a appeler la même fonction pour tout tes boutons? Si oui, peut-tu me montrer comment tu as fait?

  12. #12
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut
    merci d'avoir prise le tps de me répondre joki... en fait dans mon vrai projet les choses sont plus complexe, et je fais expres de bosser sur un exemple simplifié avec une form, des boutons et des userscontrols...

    que veux tu dire par :
    Arrives-tu déjà, a appeler la même fonction pour tout tes boutons

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2012
    Messages : 37
    Points : 48
    Points
    48
    Par défaut
    Lorsque tu cliques sur un bouton, tu tombés à chaques fois sur une fonction propre à chaque bouton non? Alors si tu défini une fonction qui te gère tout tes bouton déjà, ça simplifiera un peu je pense.

  14. #14
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut
    si tu veux en fait mon objectif est de simplifier ce code la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Private Sub exemple1_TSMI_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles exemple1_TSMI.Click
            Me.Controls.Add(New exemple1_UC)
        End Sub
     
        Private Sub exemple2_TSMI_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles exemple2_TSMI.Click
            Me.Controls.Add(New exemple2_UC)
        End Sub
    ...

    dans mon projet "réel", je bosse avec un tabcontrol et ce ne sont pas des boutons mais des toolstripmenuitem, et le code suivant fonctionne :
    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
        Private Sub frmEvent_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ParcoursMenu(MenuStrip1.Items)
        End Sub
        Sub ParcoursMenu(ByVal items As ToolStripItemCollection)
            For Each mnu As ToolStripMenuItem In items
                If mnu.Name.Contains("exemple") Then
                    AddHandler mnu.Click, AddressOf select_tp
                Else
                    ParcoursMenu(mnu.DropDownItems)
                End If
            Next
        End Sub
        Private Sub select_tp(ByVal sender As System.Object, ByVal e As System.EventArgs)
            Dim nom As String = sender.text
            If TabControl1.TabPages.ContainsKey(nom) Then
                TabControl1.SelectedTab = TabControl1.TabPages(nom)
            Else
                MessageBox.Show("Il n'existe aucune page nommée " & nom)
            End If
        End Sub

  15. #15
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut
    défini une fonction qui te gère tout tes bouton
    désolé joki mais je ne vois pas ou tu veux en venir...moi aussi je commence à avec être dans le brouillard a force de rester sur le PC...de plus ça fait deux mois que j'ai découvers la programmation donc c'est encore un peu galère...

  16. #16
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2012
    Messages : 37
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par veens777 Voir le message
    désolé joki mais je ne vois pas ou tu veux en venir...moi aussi je commence à avec être dans le brouillard a force de rester sur le PC...de plus ça fait deux mois que j'ai découvers la programmation donc c'est encore un peu galère...
    J'entendais par la, faire un addhandler sur chacun de tes bouton pour qu'ils fasse tous appel à la même fonction. Mais comme tu travailles en fait avec des toolstripmenuitem, la question ne se pose pas..
    Je ne suis pas sur mon Pc, n'étant plus au travail, donc pour le moment je ne voit pas comment parcourir tout tes usercontrols, ou comment faire autrement. J'y réfléchit et te redis ça.

  17. #17
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut
    ok merci bcp pour ton aide... et bonne soirée...

  18. #18
    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
    une solution valable dans un cas, mais pas dans un autre
    et réciproquement

    tout ca pour dire qu'il faut réfléchir à chaque cas, il y a toujours plusieurs solutions, et comme l’appétit vient en mangeant, vous aurez plus de solutions à votre portée le temps passant



    bref, après ce préambule étrange une solution possible à adapter à votre code :
    vous ajoutez une propriété Titre as string sur votre usercontrol, elle apparaitra sur toutes les instances posées sur votre form, vous remplissez le titre de chaque puis dans le sub new du form


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for each u in me.Controls.oftype(of letypedevotreUC)
        dim b as new button
        b.text = u.titre
        b.tag = u
        addhandler b.click, addressof ButtonClick
        me.controls.add(b)
    next
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sub ButtonClick (sender as object, e as system.eventargs)
        for each u in me.Controls.oftype(of letypedevotreUC)
           u.visible = false 
        next
        directcast(directcast(sender, control).tag,control).visible = true
    end sub
    à adapter à vos menus ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  19. #19
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,
    Si j'ai bien compris, tu veux créer dynamiquement un UserControl particulier en fonction de la page du TabControl affichée.
    Pour créer dynamiquement un control en connaissant uniquement le nom de sa classe sous forme de chaine, tu peux utiliser Activator.CreateInstance.
    Un exemple de création d'un UserControl de class nom_uc en reprenant ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    If TabControl1.TabPages.ContainsKey(nom) Then
            TabControl1.SelectedTab = TabControl1.TabPages(nom)
            ' Si le UserControl n'est pas encore crée, on le crée :
            If TabControl1.SelectedTab.Controls.count = 0 then
                Dim aUserControl as UserControl
                ' Création du UserControl de Classe nom
               aUsercontrol = Activator.CreateInstance(Type.GetType("NomAssembly."&nom&"_uc"))
               aUserControl.parent = TabControl1.SelectedTab
            End If
      Else
            MessageBox.Show("Il n'existe aucune page nommée " & nom)
    End If
    Je n'ai pas testé mais sauf erreur de ma part, l'esprit doit être là...

    eb.

  20. #20
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2012
    Messages : 37
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par ebastien Voir le message
    Bonjour,
    Si j'ai bien compris, tu veux créer dynamiquement un UserControl particulier en fonction de la page du TabControl affichée.
    Pour créer dynamiquement un control en connaissant uniquement le nom de sa classe sous forme de chaine, tu peux utiliser Activator.CreateInstance.
    Un exemple de création d'un UserControl de class nom_uc en reprenant ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    If TabControl1.TabPages.ContainsKey(nom) Then
            TabControl1.SelectedTab = TabControl1.TabPages(nom)
            ' Si le UserControl n'est pas encore crée, on le crée :
            If TabControl1.SelectedTab.Controls.count = 0 then
                Dim aUserControl as UserControl
                ' Création du UserControl de Classe nom
               aUsercontrol = Activator.CreateInstance(Type.GetType("NomAssembly."&nom&"_uc"))
               aUserControl.parent = TabControl1.SelectedTab
            End If
      Else
            MessageBox.Show("Il n'existe aucune page nommée " & nom)
    End If
    Je n'ai pas testé mais sauf erreur de ma part, l'esprit doit être là...

    eb.
    Curieux, je vien de tester, ça marche très bien. Cependant, comment faire si l'on a un constructeur rattacher à ce usercontrol?

Discussions similaires

  1. Réponses: 12
    Dernier message: 27/06/2014, 21h33
  2. [OL-2007] Simple boucle pour parcourir tous les messages
    Par zoliv75 dans le forum Outlook
    Réponses: 2
    Dernier message: 16/12/2009, 21h46
  3. Réponses: 1
    Dernier message: 01/12/2008, 18h03
  4. [VBA]Boucle pour parcourir tous les enregistrements
    Par Paul Gasser dans le forum VBA Access
    Réponses: 44
    Dernier message: 28/03/2007, 10h22
  5. [C#] Parcourir tous les TextBox d'un Panel
    Par Oberown dans le forum ASP.NET
    Réponses: 7
    Dernier message: 18/01/2005, 14h04

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