3

wrapPanel をループに入れるボタンがいくつかあります。

        for (int i = 0; i < wrapWidthItems; i++)
        {
            for (int j = 0; j < wrapHeightItems; j++)
            {
                Button bnt = new Button();
                bnt.Width = 50;
                bnt.Height = 50;
                bnt.Content = "Button" + i + j;
                bnt.Name = "Button" + i + j;
bnt.Click += method here ?
                wrapPanelCategoryButtons.Children.Add(bnt);
            }
        }

どのボタンがクリックされたかを知り、それぞれに対して異なることをしたい。たとえば、病気の方法

private void buttonClicked(Button b)

クリックしたボタンを送信し、そのタイプ、名前、またはIDを確認してから、何かをします。それは可能ですか?

4

3 に答える 3

3

これをループに追加します。

bnt.Click += (source, e) =>
{
    //type the method's code here, using bnt to reference the button 
};

ラムダ式を使用すると、ローカル メソッド変数にアクセスできるように、匿名メソッドをコードに埋め込むことができます。詳細については、こちらをご覧ください。

于 2012-07-27T12:22:29.683 に答える
3

イベントに接続するすべてのメソッドには引数がありsender、イベントをトリガーしたのはオブジェクトです。したがって、あなたのケースでは、クリックされた Button オブジェクトを送信します。次のようにキャストできます。

void button_Click(Object sender, EventArgs e)
{
    Button buttonThatWasClicked = (Button)sender;
    // your code here e.g. call your method buttonClicked(buttonThatWasClicked);
}
于 2012-07-27T12:22:50.633 に答える
1

両方の回答に再度感謝します-両方とも機能します。完全なコードがあります多分誰か他の人が将来それを必要とするかもしれません

    for (int i = 0; i < wrapWidthItems; i++)
    {
        for (int j = 0; j < wrapHeightItems; j++)
        {
            Button bnt = new Button();
            bnt.Width = 50;
            bnt.Height = 50;
            bnt.Content = "Button" + i + j;
            bnt.Name = "Button" + i + j;
            bnt.Click += new RoutedEventHandler(bnt_Click);
           /* bnt.Click += (source, e) =>
            {
                MessageBox.Show("Button pressed" + bnt.Name);
            };*/
            wrapPanelCategoryButtons.Children.Add(bnt);
        }
    }

}

void bnt_Click(object sender, RoutedEventArgs e)
{

    Button buttonThatWasClicked = (Button)sender;
    MessageBox.Show("Button pressed " + buttonThatWasClicked.Name);

}

ちなみに、(wrapPanelを使用して)ボタンを別の場所に移動できるかどうか知りたいですか?つまり、クリックしてドラッグボタンを押すと、ラップパネルでそれを実行できるようになりますか?

于 2012-07-27T12:33:44.743 に答える