winform 动态添加自定义控件

c# winform 动态添加多个之定义控件,怎么可以访问某一个控件的事件呢


            for (int i = 0; i < 5; i++)
            {
                Control.Refueller r1 = new Control.Refueller();
                r1.Name = "jy"+i;
                r1.Size = new Size(220, 281);
                //r1.ResetText = "123123123123";
                r1.Location = new Point(220*i, 0);
                r1.Show();    
                panel1.Controls.Add(r1);
            }
 

r1.Click += new EventHandler(r1click);

void r1click(object snd, EventArgs eag)
{
...
}

【以下回答由 GPT 生成】

问题解答:

要访问动态添加的自定义控件的事件,可以采用以下步骤:

  1. 在自定义控件的类中定义一个事件。假设我们的自定义控件叫做Refueller,声明一个名为ButtonClick的事件:
public event EventHandler ButtonClick;
  1. 在自定义控件类中,当按钮被点击时触发事件。假设这里有一个名为button1的按钮,当点击它时触发事件:
private void button1_Click(object sender, EventArgs e)
{
    ButtonClick?.Invoke(this, e);
}
  1. 在主窗体(WinForm)中订阅事件。在主窗体中的代码中,可以订阅Refueller控件的ButtonClick事件,然后执行相应的操作。在主窗体的构造函数中添加以下代码:
for (int i = 0; i < 5; i++)
{
    Control.Refueller r1 = new Control.Refueller();
    r1.Name = "jy" + i;
    r1.Size = new Size(220, 281);
    r1.Location = new Point(220 * i, 0);
    r1.ButtonClick += R1_ButtonClick; // 订阅事件
    r1.Show();
    panel1.Controls.Add(r1);
}

// 事件处理程序
private void R1_ButtonClick(object sender, EventArgs e)
{
    // 在这里执行相应的操作
}

现在,当你点击Refueller控件中的按钮时,会触发ButtonClick事件,并在主窗体中执行相应的操作。通过将事件订阅到主窗体,你就可以访问其中一个控件的事件。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^