如何在代码生成的用户控件上运行函数
本文关键字:控件 运行 函数 用户 代码生成 | 更新日期: 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();
}