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

C# Discussion :

Créer un Click pour un bouton en code C#


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 19
    Par défaut Créer un Click pour un bouton en code C#
    Bonjour,

    Dans mon code C# je génère des boutons dynamiquement en fonction de certains paramètres, par contre je n'arrive pas à leur affecter un Click avec un nom différent.

    Voici mon code :

    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
    21
    22
    23
    using Button = System.Windows.Controls.Button;
     
    private void MakeButtonXML()
    {
        string strDirectory = GetPathXML("Mu");
        if (System.IO.Directory.Exists(strDirectory))
        {
            string[] SubDirectory = StoreSubDirectories(strDirectory);
     
                    for (int i = 0; i <= SubDirectory.Length - 1; i++)
            {
                Button btn = new Button();
                btn.Content = SubDirectory[i];
                btn.Style = (Style)System.Windows.Application.Current.FindResource("ButtonNav");
                //btn.Click += 
                btn.Click += btn_Click;  // ajouter par exemple i pour ajouter un chiffre au bouton
                StackButton.Children.Add(btn);                    
            }
        }
    }
     
    // est-ce possible aussi de le faire pour l'événement ?
    private void btn_Click(object sender, RoutedEventArgs e) { }
    Quelqu'un a une idée? Merci

  2. #2
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 660
    Par défaut
    Bonjour,

    Peut-être que par reflection c'est possible mais là je vois une meilleure solution + simple et + propre c'est d'avoir une seule et même fonction pour chaque bouton et les différencier par un autre moyen.

    Plusieurs solutions possibles comme stocker un ID dans un champ de méta données du bouton, ou alors un dictionnaire (ou un bouton est associé a une fonction). C'est selon tes besoins

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 19
    Par défaut
    Merci pour ton retour, le problème est que je souhaite générer des boutons à partir des sous-dossiers d'un dossier. J'ai réussi à les générer avec le nom de chaque dossier, me manque plus qu'à les rendre cliquable.

    C'est peut-être trop ambitieux mais je pense que ça devrait pouvoir se faire

  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
    c'est bien prévu pour être utilisé comme ca
    imagine qqn qui créé 200 boutons, il ne va pas faire 200 méthodes ^^

    donc il faut bien une seule méthode _Click, tous les boutons l'utilisent
    par contre dans la méthode il y a object sender, ceci représente le bouton cliqué (à caster)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var clickedButton = (Button)sender;
    MessageBox.Show(clickedButton.Content);
    si tu veux stocker quelque chose de non visible tu peux utiliser la propriété Tag qui existe sur tous les controles, ca sert à stocker ce qu'on veut dedans et pouvoir y accéder plus tard
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    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
    tu peux aussi faire ça en xaml

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <ItemsControl ItemsSource="{Binding Directories}"> <!-- avec Directories de type collection -->
      <ItemsControl.ItemTemplate>
        <DataTemplate>
          <Button Content="{Binding}" Style="{StaticResource ButtonNav}" Click="ButtonDirectory_Click"/>
    ...
    et ItemsControl.ItemsPanelTemplate permet de choisir si tu veux autre chose qu'un stackpanel vertical
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 19
    Par défaut
    Merci Pol63, je vais explorer tes pistes très intéressantes!

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

Discussions similaires

  1. [Débutant] impossible de créer des evenement pour mes boutons sur une page asp
    Par Msysteme dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/05/2014, 13h27
  2. évènement sur click pour 50 boutons d'une form
    Par timotep dans le forum Windows Forms
    Réponses: 4
    Dernier message: 22/07/2008, 11h56
  3. pb de code pour un bouton
    Par Bruno29 dans le forum Flash
    Réponses: 13
    Dernier message: 14/01/2007, 14h01
  4. [VBA-E] Aide pour un bouton dans excel qui exécuterai mon code.
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/05/2006, 16h23
  5. Réponses: 7
    Dernier message: 09/11/2005, 02h17

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