如何使用 C# 编写动态按钮事件处理程序代码
本文关键字:按钮 事件处理 程序 代码 动态 何使用 | 更新日期: 2023-09-27 18:26:37
int h = 100;n=4;
for (int i = 0; i < n; i++)
{
Button dybtn = new Button();
dybtn.Location = new Point(80, h);
dybtn.Height = 100;
dybtn.Width = 100;
dybtn.Name = "dybtn";
dybtn.Text = "";
Controls.Add(dybtn);
h = h + 100;
dybtn.Click += new EventHandler(dybtn_Click);
}
private void dybtn_Click(object sender, EventArgs e)
{
MessageBox.Show("Dynamic button is clicked");
}
我创建了四个动态按钮,当我编写事件处理代码时,所有按钮都响应相同的代码。
我需要使用 c#
为每个按钮单独编写事件处理代码因此,请让我知道如何为每个按钮编写事件处理代码。
我建议您通过执行类似dybtn的操作为动态创建的按钮分配不同的名称。名称 = "dybtn" + i;。
int h = 100;n=4;
for (int i = 0; i < n; i++)
{
Button dybtn = new Button();
dybtn.Location = new Point(80, h);
dybtn.Height = 100;
dybtn.Width = 100;
dybtn.Name = "dybtn" + i;
dybtn.Text = "";
Controls.Add(dybtn);
h = h + 100;
dybtn.Click += new EventHandler(dybtn_Click);
}
然后在事件处理程序代码中,检查按钮的名称,并根据需要使用 Switch 执行代码。案例或如果..还。
与@TheLethalCoder答案不同,我建议您为所有按钮创建一个处理程序,然后使用 h
选项为每个按钮定义不同的操作(或任何您的想法(
void dybtn_Click(object sender, EventArgs e)
{
Button btn = (Button) sender;
int h = btn.Location.Y;
if (h == 100)
{
//Mission 1
}
else if (h == 200)
{
//Mission 2
}
//etc...
}
从我的评论中扩展,每个按钮的唯一区别是它在表单上y
位置。您可以通过更改变量的值来跟踪此情况 h
。因此,如果您确实想这样做,只需将其更改为执行以下操作:
if (h == 100)
{
dybtn.Click += new EventHandler(dybtn_Click1);
}
else if (h == 200)
{
dybtn.Click += new EventHandler(dybtn_Click2);
}
//etc...
或者,您可以使用 i
变量执行完全相同的操作,但通过这种方式,您可以根据位置控制哪个事件处理程序转到哪个按钮。
但是,这听起来确实像是糟糕的代码设计,因此,如果您只想基于不同按钮的特定事件,只需单独执行即可。