如何在代码生成的用户控件上运行函数

本文关键字:控件 运行 函数 用户 代码生成 | 更新日期: 2023-09-27 18:36:14

我创建了一个生成多个用户控件的表单。必须有一个无限的可以添加的金额 - 不一定有,但不需要有金额上限。

我使用以下代码来添加它们:

for (int i = 0; i < ucCount; i++)
{
    UserControl1 uc = new UserControl1();
    uc.name = "uc" + i.ToString();
    flowLayout.Controls.Add(uc);
    uc.Click -= new EventHandler(uc_Click);
    uc.Click += new EventHandler(uc_Click);
}

ucCount 只是一个变量,用于更改添加的数量。

我现在遇到的问题是,我在用户控件中有一个方法,需要在按下按钮时运行。这是以下方法的代码:

public void ResizeTrucks()
{
    ...
}

通常,如果我添加了具有特殊名称的控件,我将执行以下操作:

uc.ResizeTrucks();

由于我在代码中添加了它们并更改了它们的名称,因此我无法再这样做。

我现在有以下代码来更改所有用户控件的大小。

foreach (Control c in flowTrucks.Controls)
{
    c.Width = 103;
    c.Height = 528;
}

基本上,我面临的问题是在我在代码中生成的用户控件中运行函数,所以我不能只做uc1.ResizeTrucks();

我想我记得在某处读到你可以按名称获取函数然后运行它,但我无法在任何地方找到它。任何帮助将不胜感激。

如何在代码生成的用户控件上运行函数

您希望强制转换为相应的用户控件类型,然后可以运行该函数。像这样:

foreach (Control c in flowTrucks.Controls)
{
    c.Width = 103;
    c.Height = 528;
    var x = c as UserControl1;
    if (x == null) continue; // not a UserControl1
    x.ResizeTrucks();
}