C# - 在 Panel 中按 z-index 重新排序控件

C# - Reordering controls by z-index in Panel

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

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

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

将动态控件添加到 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();

我认为这是 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;

        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;