C#-按面板中的z-index重新排序控件

时间:2018-08-02 16:09:29

标签: c# user-controls panel picturebox

我有一个带有 PictureBox 且带有Dock = DockStyle.Fill的面板。我需要向面板动态添加控件,但它们必须位于PictureBox上方。

在Designer中这很容易,但是当我以编程方式执行此操作时,SetChildIndex(),BringToFront()或SendToBack()都不起作用。

我必须使用PictureBox,我不能只设置Panel.BackgroundImage,因为它有故障。

2 个答案:

答案 0 :(得分:2)

我认为这是design.cs面板中控件顺序的问题

从面板中删除控件,并以正确的顺序添加它们。

        this.panel1.Controls.Add(this.pictureBox1);
        this.panel1.Controls.Add(this.button1);
        this.panel1.Location = new System.Drawing.Point(12, 12);
        this.panel1.Name = "panel1";
        this.panel1.Size = new System.Drawing.Size(260, 238);
        this.panel1.TabIndex = 0;

button under piturebox

        this.panel1.Controls.Add(this.button1);
        this.panel1.Controls.Add(this.pictureBox1);
        this.panel1.Location = new System.Drawing.Point(12, 12);
        this.panel1.Name = "panel1";
        this.panel1.Size = new System.Drawing.Size(260, 238);
        this.panel1.TabIndex = 0;

enter image description here

答案 1 :(得分:1)

将动态控件添加到Controls并找到它后,BringToFront如下所示:

TextBox tb = new TextBox
{
    Location = new Point(100, 100),
    Name = "Textbox1"
};

this.Controls.Add(tb);

var contr = Controls.Find("Textbox1", true)[0];
contr.BringToFront();

或者,一旦添加了新的动态控件。将SendToBack应用于PictureBox

  pictureBox1.SendToBack();

lion