Android Xamarin以编程方式生成Button Click

时间:2014-08-10 19:32:16

标签: c# android xamarin xamarin.android

我在Android Xamarin(C#)中以编程方式创建按钮,如下所示:

for(int i = 0; i < 3; i++) {
    ...
    Button b = new Button(this);
    b.Click += delegate {
        processClick(i);
    };
    ...
}

processClick方法如下所示:

public void processClick(int i) {
    ... Log("i: " + i);
}

它成功创建了3个按钮,但是如果我按下其中任何一个按钮,控制台记录的编号为3.问题是,如何处理按编程创建按钮的点击事件?

1 个答案:

答案 0 :(得分:3)

这称为closure。重写你的for循环如下:

for(int i = 0; i < 3; i++) {
    ...
    Button b = new Button(this);
    var j= i;
    b.Click += delegate {
        processClick(j);
    };
    ...
}

与此主题相关的SO上也有一个很好的discussion