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 :

Assigner une fonction a un objet creer dynamiquement?


Sujet :

Windows Forms

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 43
    Par défaut Assigner une fonction a un objet creer dynamiquement?
    Bonsoir(bonjour) a tous, suite a mon autre poste, j'ai réussi a créer ma matrice de label.
    Seulement j'aimerai bien pouvoir assigner a ces label des actions...

    Du style: je dispose d'une variable contenant une couleur, lors d'un clic sur un de ces label dynamique pouvoir lui assigner la couleur de cette variable..

    Sur des label déjà existant pas de problèmes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
            Me.Label1.BackColor() = varcouleur
        End Sub
    Seulement comment faire avec des label creer dynamiquement(dont le nom est dynamique donc...)

    J'ai penser aux collections, mais n'étant pas expert avec ce mécanisme, j'ai voulu créer une classe contenant donc avec ses propres variables et fonction, et dès lors ne pas créer dynamiquement des label mais bien des objet de cette classe.
    Problème, il me met comme erreur que je ne peux ajouter des objet de ce type a mon form1 via "Me.Controls.Add(mon_objet)"


    Merci d'avance

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    En VB.NET, je crois que c'est un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddHandler monLabel.Click ,AddressOf MaMethode
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 43
    Par défaut
    Ha je ne sais malheureusement pas essayé mais je prend note cela pourrait m'etre utile, mais le probleme c'est justement pour mon probleme ça n'ira pas.

    Les nom de mes labels sont generer dynamiquement. Je fais une matrice de label donc leur nom est composer de labelxy (X etant le numéro de la colonne et y la ligne).

    Donc si je veux attribuer a tout mes label générer dynamiquement la fonction en question, ton astuce pourrait être utile mais reste un problème "monLabel.Click" pour cela il me faut le nom du label...

    N'y aurait-il pas moyen de faire une méthode qui fonctionnerai a n'importe qu'elle clic de la souris?

    Par après de vérifier dans cette méthode si l'objet est un label et que ses deux dernière lettres sont des nombres. A partir de la je suis sur d'être sur un de mes labels et je peux appliquer l'action voulue...

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    au moment ou tu créé tes labels (dans une boucle à priori) tu fais addhandler après le controls.Add par exemple

    donc tous tes label pointeront vers la meme sub pour le click
    ensuite dans la méthode, il y a un paramètre nommé sender, qui contient l'instance qui a déclenché l'évènement

    donc tu peux tester le nom de sender pour savoir qui c'est


    attention, les addhandlers ajouté par code imposent de faire les removehandlers qui vont avec, sinon fuite mémoire à priori
    enfin pour une appli non distribuée ou pas importante, c'est pas grave si tu les mets pas
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/02/2009, 17h21
  2. Réponses: 2
    Dernier message: 20/06/2007, 12h12
  3. Assigné une fonction à une touche du clavier
    Par jay1234 dans le forum C++
    Réponses: 5
    Dernier message: 10/10/2006, 22h30
  4. Réponses: 6
    Dernier message: 02/10/2006, 12h13
  5. Réponses: 7
    Dernier message: 27/08/2006, 17h59

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