C# - 在 Panel 中按 z-index 重新排序控件
C# - Reordering controls by z-index in Panel
我有一个带有 PictureBox 和 Dock = 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;
我有一个带有 PictureBox 和 Dock = 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;