我正在寫一個WinForms應用程序。在這個應用程序中,我生成動態的Label
,PictureBox
和TextBox
控件。C# - 即使設置了父級,爲什麼我的動態標籤不透明?
隨着將Image
拖放到PictureBox
中,添加的TextBox
將打開。輸入一些文本並按下「Enter」鍵後,會觸發以下方法。
private void tb_Tile_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
TextBox tb_Tile = sender as TextBox;
Tile tb_Tag = tb_Tile.Tag as Tile;
//add function that overgives the given name to the matrix i.e. GiveNameToMatrix()
tb_Tile.Visible = false;
Label lbl_Tile = Controls.Find("Label" + tb_Tag.X + tb_Tag.Y, true).FirstOrDefault() as Label;
lbl_Tile.Visible = true;
//find picture box by tag or sth and then make this pB the parent
PictureBox pb_Tile = (PictureBox)gb_gridBox.Controls["Tile" + tb_Tag.X + tb_Tag.Y];
pb_Tile.BackgroundImage = pb_Tile.Image;
lbl_Tile.Parent = pb_Tile;
// pb_Tile.Visible = false;
if (pb_Tile.HasChildren)
{
lbl_Tile.Text = tb_Tile.Text; //parent has to be set to PictureBox
lbl_Tile.Visible = true;
lbl_Tile.ForeColor = Color.Black;
lbl_Tile.BackColor = Color.Transparent;
lbl_Tile.Location = pb_Tile.Location;
lbl_Tile.Refresh();
pb_Tile.Refresh();
gb_gridBox.Controls.Add(lbl_Tile);
lbl_Tile.BringToFront();
}
}
}
我想Label.Text
被顯示在PictureBox
。這就是爲什麼我將PictureBox
設置爲Label
和Label.BackColor
的父級爲透明。但Label
剛好消失的背後PictureBox
...
有沒有人有一個線索如何解決這個問題,也可以給我一個提示,以顯示在PictureBox
前文的另一種可能性?
在此先感謝。
您是否嘗試調整控件的[z順序](https://msdn.microsoft.com/en-us/library/wh9zw57z(v = vs.110).aspx)?例如。 'lbl_Tile.BringToFront();' –
你有沒有試過設置'gb_gridBox.Controls.SetChildIndex(lbl_tile,0);'? – Pikoh
謝謝! 是的,我使用BringToFront(),你可以在最後一行看到。 並設置子索引將標籤放在PictureBox前面,但它不會變成透明。 – electrogandalf