要在运行时创建Button及其click事件,我使用:
Button b = new Button();
b.Name = "btn1";
b.Click += btn1_Click;
Run Code Online (Sandbox Code Playgroud)
但是现在我在运行时创建了一系列按钮; 如何设置每个按钮的事件 - 我无法插值,因为它不是一个字符串.
Button[] b = new Button(Count);
for (int i=0; i < Count; i++)
{
b[i] = new Button();
b[i].Name = "btn" + i;
b[i].Click += ??????
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办"?????"
选项1:
您可以传递lambda函数,并根据数组中的按钮索引创建处理程序,如下所示:
for (int i=0; i < Count; i++)
{
b[i] = new Button();
b[i].Name = "btn" + i;
b[i].Click += (sender, args) =>
{
// your code
}
}
Run Code Online (Sandbox Code Playgroud)
选项2:
您可以传递匿名代表:
b[i].Click += delegate (sender, args) {
// your code
};
Run Code Online (Sandbox Code Playgroud)
选项3:
您可以指定处理函数:
b[i].Click += YourHandlerFunction
// ....
// The handler signature also has to have the correct signature
void YourHandlerFunction(object sender, ButtonEventArgs args)
{
// your code
}
Run Code Online (Sandbox Code Playgroud)