我创建了一个生成多个UserControl的表单。必须有一个可以添加的无限量 - 不一定,但不需要限额。
我使用以下代码添加它们:
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只是一个可以更改添加量的变量。
我现在遇到的问题是,当按下按钮时,我在UserControls中有一个需要运行的方法。这是以下方法的代码:
public void ResizeTrucks()
{
...
}
通常,如果我添加了带有特殊名称的控件,我会做到以下几点:
uc.ResizeTrucks();
由于我在代码中添加了它们并更改了它们的名称,因此我无法再这样做了。
我现在有以下代码来更改所有用户控件的大小。
foreach (Control c in flowTrucks.Controls)
{
c.Width = 103;
c.Height = 528;
}
基本上,我遇到的问题是在我在代码中生成的用户控件中运行一个函数,所以我不能uc1.ResizeTrucks();
。
我想我记得在某个地方读过你可以通过名字获得这个功能然后运行它,但我还没有能够在任何地方找到它。任何帮助将不胜感激。
答案 0 :(得分:1)
您想要转换为适当的用户控件类型,然后您可以运行该功能。类似的东西:
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();
}