複数のピクチャ ボックスとラベルを含むユーザー コントロールがあります。各ラベル (lb) を独自の Picturebox (pbParent) に配置する必要があり、このピクチャ ボックスの下の PictureBox 画像の可視性を向上させるために、ラベルの背景色を透明にする必要があります。ピクチャ ボックスには TabFrame0 から TabFrameN という名前が付けられ、ラベルには Label0 から LabelN という名前が付けられます。
名前で検索されたラベルを返さなければならないGetLabelByTag関数があります。Label の親を PictureBox にするまでは問題なく動作します (8 行目を参照)。だから、私の質問は次のとおりです:親が私のUserControlではなくpictureBoxになる場合、どのコレクションにラベルが含まれているかをどのように見つけるのですか?
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;
}