我有一个用户控件,上面有多个图片框和标签。我需要将每个Label(lb)放在他自己的Picturebox(pbParent)上,并且标签Backcolor必须是透明的,以提高PictureBox Image在这个图片框下的可见性。图片框命名为 TabFrame0 到 TabFrameN,标签命名为 Label0 到 LabelN。
我有一个函数GetLabelByTag必须返回按其名称搜索的标签。在我将 Label 的父级设置为 PictureBox 之前,它工作正常(见第 8 行)。所以,我的问题是:如果它的父级变成图片框,而不是我的 UserControl,我如何找到标签,哪个集合包含它?
void CreateControls()
{
...
newLabel.Name = TAB_PIC_BOX_LABEL_NAME + _id.ToString(); //1
newLabel.Text = _text;//2
newLabel.Tag = _id;//3
newLabel.AutoSize = true;//4
Controls.Add(newLabel);//5
Label lb = GetLabelByTag(_id, TAB_PIC_BOX_LABEL_NAME);//6
PictureBox pbParent = GetPicBoxByTag(_id, TAB_PIC_BOX_CONTROL_NAME);//7
lb.Parent=pbParent;//8
lb.BringToFront();//9
...
}
...
Label GetLabelByTag(int _tag, string _family)
{
Label rez = new Label();
foreach (Control lb in Controls)
{
if (lb.Tag != null)
{
if (((int)lb.Tag == _tag) && (lb.Name == _family + _tag.ToString()))
{
rez = (Label)lb;
}
}
}
return rez;
}