如何在循环中动态更改用户控件的属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在循环中动态更改用户控件的属性相关的知识,希望对你有一定的参考价值。
1我有问题,我将在循环中使用usercontrol。换句话说,我想改变usercontrols属性,但我不能。所以我有一个名为ucProperty的usercontrol,里面有许多标签。我已经调用了所有这些,例如LblNameModel,LblImageName,...在我的表单中有许多用户控件 - ucProperty1,2,.8现在我想动态地在循环中更改它们的属性(LblNameModel,LblImageName,..) 。我试试这个:
int i = 1;
foreach (Control contrl in this.Controls)
{
if (contrl.Name == ("ucProperty" + i.ToString()))
{
contrl.LblNameModel = "Model" + i.ToString();
contrl.LblImageName = "image" + i.ToString() + ".jpg";
i++;
}
}
qazxsw poi LblName Model不被接受
但它不起作用。我的问题是控制后的属性为LblName Model。不接受编程。我如何在循环中更改属性
在我的usercontrol enter image description here中有代码:
ucProperty
public string LblNameModel
{
get { return lblNameModel.Text; }
set { lblNameModel.Text = value; }
}
您必须过滤并转换为用户控件
this is next result
如果只是遍历控件,则会得到一个类型为using System.Linq;
...
foreach (var uc in this.Controls.OfType<MyUserControlType>())
{
string number = uc.Name.SubString("ucProperty".Length);
uc.LblNameModel = "Model" + number;
uc.LblImageName = "image" + number + ".jpg";
}
的循环变量,并且您无法访问特定于用户控件的属性。 Control
扩展方法(命名空间OfType<T>
)同时进行过滤和转换。
我假设所有这些用户控件都被命名为System.Linq
。否则添加支票
ucProperty<number>
请注意,如果用户控件没有按正确的顺序出现,那么使用if (uc.Name.StartsWith("ucProperty"))
的方法会出现问题。即如果i
产生foreach
但"ucProperty4"
是i
则将跳过此控件。
以上是关于如何在循环中动态更改用户控件的属性的主要内容,如果未能解决你的问题,请参考以下文章