web-dev-qa-db-fra.com

Cliquez sur le bouton WPF dans le code C #

J'ai un tableau de boutons qui est généré dynamiquement au moment de l'exécution. J'ai la fonction de clic sur le bouton dans mon code, mais je ne trouve pas de moyen de définir le nom du clic du bouton dans le code. Donc,

quel est le code équivalent pour XAML:

<Button x:Name="btn1" Click="btn1_Click">

Ou, que dois-je placer pour "????" dans le code suivant:

Button btn = new Button()
btn.Name = "btn1";
btn.???? = "btn1_Click";

17
KMC
Button btn = new Button();
btn.Name = "btn1";
btn.Click += btn1_Click;

private void btn1_Click(object sender, RoutedEventArgs e)
{
    // do something
}
40
Tom Dudfield

Ce qui suit devrait faire l'affaire:

btn.Click += btn1_Click;
11
Daniel Hilgarth
// sample C#
public void populateButtons()
{
    int xPos;
    int yPos;

    Random ranNum = new Random();

    for (int i = 0; i < 50; i++)
    {
        Button foo = new Button();
        Style buttonStyle = Window.Resources["CurvedButton"] as Style;

        int sizeValue = ranNum.Next(50);

        foo.Width = sizeValue;
        foo.Height = sizeValue;
        foo.Name = "button" + i;

        xPos = ranNum.Next(300);
        yPos = ranNum.Next(200);

        foo.HorizontalAlignment = HorizontalAlignment.Left;
        foo.VerticalAlignment = VerticalAlignment.Top;
        foo.Margin = new Thickness(xPos, yPos, 0, 0);

        foo.Style = buttonStyle;

        foo.Click += new RoutedEventHandler(buttonClick);
        LayoutRoot.Children.Add(foo);
   }
}

private void buttonClick(object sender, EventArgs e)
{
  //do something or...
  Button clicked = (Button) sender;
  MessageBox.Show("Button's name is: " + clicked.Name);
}
3
abramlimpin

Je ne pense pas que WPF supporte ce que vous essayez de réaliser, c'est-à-dire assigner une méthode à un bouton en utilisant le nom de la méthode ou btn1.Click = "btn1_Click". Vous devrez utiliser l'approche suggérée dans les réponses ci-dessus, c'est-à-dire enregistrer l'événement de clic de bouton avec la méthode appropriée btn1.Click + = btn1_Click;

1
Haris Hasan

Vous devez placer sous la ligne

btn.Click = btn.Click + btn1_Click;
0
user2622971