for (int i = 0; i < counter; i++)
{
Label lb = new Label();
lb.Width = 50;
lb.Height = 35;
lb.FontFamily = new FontFamily("LiSu");
lb.HorizontalAlignment = HorizontalAlignment.Left;
lb.VerticalAlignment = VerticalAlignment.Bottom;
lb.FontWeight = FontWeights.Bold;
Canvas.SetTop(lb, i * (-2));
lb.Background = Brushes.Transparent;
lb.HorizontalContentAlignment = HorizontalAlignment.Center;
lb.VerticalContentAlignment = VerticalAlignment.Center;
canEAChip_Idle5.Children.Add(lb);
}
我用for循环动态添加Label,我要怎么获取每个Label的名称呢,我想给添加出来的Label加上背景。
方法1,在创建的时候把Label保存在一个List中
方法2,遍历canEAChip_Idle5内的控件,然后判断是Label的话就加上背景
foreach (UIElement element in canEAChip_Idle5.Children)
{
if (element is Label)
{
Label current = ((Label)element);
//设置背景
current.Background = Brushes.Transparent;
}
}
方法3,如果使用VisualTreeHelper的话,参考如下:
//定义扩展方法
public static IEnumerable <DependencyObject> GetVisuals(this DependencyObject root)
{
int count = VisualTreeHelper.GetChildrenCount(root);
for (int i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(root, i);
yield return child;
foreach (var descendants in child.GetVisuals())
{
yield return descendants;
}
}
}
//调用如下(将所有Control禁掉):
LayoutRoot.GetVisuals().OfType <Control>().ToList().ForEach(item =>
{
item.IsEnabled = false;
});
遍历出来的第二个Label的名称怎么表示,因为我这每个Label的背景都不是固定的,所以判断起来很麻烦。
@路晚歌: 你没有必要知道第二个Label的名称吧。你这样就能知道是第几个Label了
int i=0;
foreach (UIElement element in canEAChip_Idle5.Children)
{
if (element is Label)
{
i++;
if(i==1)//这里等于几就是设置第几个label
{
Label current = ((Label)element);
//设置背景
current.Background = Brushes.Transparent;
}
}
}
string lablbEAChip_Idle = "lbEAChip_Idle";
int intlbEAChip_Idle=lablbEAChip_Idle.Length;
foreach (UIElement element in canEAChip_Idle5.Children)
{
Label labn = element as Label;
if(labn!=null){
string name = labn.Name;
int i =int.Parse( name.Substring(intlbEAChip_Idle));
}
}
這個代碼 已經找到label了。想怎麼操作 都好了。昨天 都回答了你了。還不明白?
Label labn = element as Label;
额,我只是不知道后面怎么搞,你能不能帮忙写一个出来我下,比如给第一个label添加一个背景,WPF才学没多久,不好意思!
@路晚歌: Label labn = canEAChip_Idle5.Children[0] as Label;
if(labn!=null){
labn .Background = Brushes.Transparent;
}
根本捕捉不到lable啊