繁体   English   中英

Android Xamarin以编程方式生成的Button单击

[英]Android Xamarin programmatically generated Button Click

我正在以编程方式在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。问题是,如何处理以编程方式创建的按钮的单击事件?

这称为闭包 如下重写您的for循环:

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

关于此主题的SO也有很好的讨论

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM