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 :

Création dynamique de contrôles avec événements différents


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Création dynamique de contrôles avec événements différents
    Bonjour,
    Actuellement je suis perdu en ce qui concerne la création dynamique d'événement et leur affectation à des contrôles eux aussi créés dynamiquement.

    Permettez-moi donc de lister mes 3 principaux soucis.
    (le langage utilisé est VB NET 2.0)

    1/ Je parviens à créer dynamiquement plusieurs items MenuStrip au travers d'une boucle, et à les intégrer à un menu. Toutefois, je ne sais pas comment accéder à leurs événements comme Click, etc.
    Comme ils sont créé pendant l'exécution, je ne sais pas comment les cibler ou agir sur eux.

    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
    Private Sub maProcedure()
     
            For nbRes As Short = 0 To 2             
     
                Dim miRes As System.Windows.Forms.MenuItem = New System.Windows.Forms.MenuItem
     
                miRes.Text = nbRes .ToString
                miRes.Name = "tsmi" & nbRes .ToString 
     
                tsmiResolution.DropDownItems.Add(miRes.Text)
    'tsmiResolution est un item de sous-menu deja existant.
    '(le menu est un System.Windows.forms.MenuStrip ; je l'ai nommé menuPrincipal)
     
            Next
     
        End Sub
    #End Region
    Voilà, si quelqu'un sait comment accéder aux propriétés/méthodes d'un contrôle créé dynamiquement...

    2/ Autre difficulté : affecter une méthode maFonction au contrôle dynamiquement créé. Voici le schéma du programme :

    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
    Classe monFormulaire  'classe qui correspond au formulaire VB
       Inherits System.Windows.Forms
    Dim monTableau(2) As Integer
     
    Private Function maFonction(ByVal uneValeur As Integer)
    '[... ici, il s'agit de modification de l'affichage graphique, donc pas de retour de valeur.
    'En revanche, la variable en paramètre uneValeur contient l'indice qui me permet de cibler une ligne de mon tableau]
    Return Nothing
    End Function
     
    Private Sub maProcedure()
    '[... la procédure remplit le tableau monTableau déclaré en début de classe]
    '[... c'est également ici que j'essaye d'affecter la méthode maFonction()
    'à mon controle dynamiquement créé (le MenuItem mentionné précédemment), et que je ne sais pas comment faire]
    End Sub
     
    End class
    3/ Enfin, quelle(s) instruction(s) événementielle(s) faudrait-il utiliser pour déclencher l'application de la méthode maFonction() lorsque je clique sur un des 3 MenuItem dynamiquement créés ? (sachant que la méthode maFonction comporte un paramètre nécessaire ?)

    Voilà, si vous avez des pistes ou des solutions à partager, je vous en serai très très reconnaissant ^^.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Salut

    Grosso modo tes 3 questions tournent autour du meme truc : en gros tu veux créer des menu items dynamiquement et tu veux leur assigner une fonction sur un évenement onclick ou un truc du genre.

    - Tu peux acceder à tes controles via tsmiResolution.DropDownItems(i)
    - Pour assigner une methode à un évenement : addhandler MonControl.EvenementDuControle, addressof MaMéthodeAttachéeAL'evenement
    Il faut bien entendu que la méthode existe pour que cela fonctionne ^^
    - Pour les paramètres en fait tu n'as pas trop le choix : tu dois te conformer à la signature de l'événement. En général tu as deux paramètres : le sender (controle qui a lancé l'évenement) suivi d'un objet contenant les propriétés qui interressent lors de cet évenement (regardes les événements générés automatiquement quand tu créés une interface d'appli, tu verras de quoi je parle).

    Donc grosso modo, pour faire ce que tu cherches tu peux passer par plusieurs choses :
    - L'index de ton menuItem s'il correspond à l'index que tu veux utiliser dans ton tableau
    - La propriété Tag du menuitem dans laquelle tu as placé l'index que tu veux
    ...

    Sachant que le menuitem en question sera passé en paramètre ("sender") à la méthode appelée via l'évenement onclick, il ne te reste plus qu'à travailler avec

Discussions similaires

  1. Création dynamique de controles avec évènement
    Par Crampignon dans le forum VB.NET
    Réponses: 2
    Dernier message: 18/06/2009, 09h44
  2. [C#] Création d'un contrôle avec collection intégrée
    Par nerix dans le forum Windows Forms
    Réponses: 2
    Dernier message: 28/06/2006, 10h07
  3. Création dynamique de contrôle Treeview
    Par supernova dans le forum Access
    Réponses: 1
    Dernier message: 06/06/2006, 13h25
  4. Erreur création dynamique de contrôle
    Par thierrybatlle dans le forum Access
    Réponses: 1
    Dernier message: 10/02/2006, 11h00
  5. Création dynamique de contrôles
    Par qi130 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 17/12/2004, 13h19

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