C# winform 添加面板停靠设置
C# winform add panel dock setting
我需要在主面板中添加多个面板,当我添加第二个面板时,它会移动到第一个添加的面板之上。如果你不明白我的意思,请参考图片。
问题是,如何在刚刚添加的面板下方添加以下面板?
public override DockStyle Dock { get; set; }
private void resultlabel()
{
Panel panel1 = new Panel();
panel1.Height = 50;
panel1.Dock = DockStyle.Top;
panel1.AutoSize = false;
panel1.AutoSizeMode = AutoSizeMode.GrowOnly;
panel1.AllowDrop = false;
panel1.CausesValidation = true;
if((totalitem % 2) == 0)
{
panel1.BackColor = Color.Blue;
}
else
{
panel1.BackColor = Color.Orange;
}
Label label1 = new Label();
label1.Text = count.ToString();
panel1.Controls.Add(label1);
mainPanel.Controls.Add(panel1);
count= count+ 1;
}
你因此得到结果:
panel1.Dock = DockStyle.Top;
因此,您添加的每个面板都会添加到顶部。你能以相反的顺序添加面板吗?这将是一个快速的解决方案,否则您可以查看 TableLayoutPanel 或 FlowLayoutPanel 是否对您的问题有用。
您需要更改 z 顺序才能更改停靠面板的顺序。不更改大量代码的最佳选择是使用:
panel1.BringToFront();
或者
panel1.SendToBack();
取决于你想要的顺序
这需要在 添加到 mainPanel
之后完成(即 mainPanel.Controls.Add(panel1);
线)
尝试使用 panel1.Dock = DockStyle.Bottom;
而不是:panel1.Dock = DockStyle.Top;
我需要在主面板中添加多个面板,当我添加第二个面板时,它会移动到第一个添加的面板之上。如果你不明白我的意思,请参考图片。
问题是,如何在刚刚添加的面板下方添加以下面板?
public override DockStyle Dock { get; set; }
private void resultlabel()
{
Panel panel1 = new Panel();
panel1.Height = 50;
panel1.Dock = DockStyle.Top;
panel1.AutoSize = false;
panel1.AutoSizeMode = AutoSizeMode.GrowOnly;
panel1.AllowDrop = false;
panel1.CausesValidation = true;
if((totalitem % 2) == 0)
{
panel1.BackColor = Color.Blue;
}
else
{
panel1.BackColor = Color.Orange;
}
Label label1 = new Label();
label1.Text = count.ToString();
panel1.Controls.Add(label1);
mainPanel.Controls.Add(panel1);
count= count+ 1;
}
你因此得到结果:
panel1.Dock = DockStyle.Top;
因此,您添加的每个面板都会添加到顶部。你能以相反的顺序添加面板吗?这将是一个快速的解决方案,否则您可以查看 TableLayoutPanel 或 FlowLayoutPanel 是否对您的问题有用。
您需要更改 z 顺序才能更改停靠面板的顺序。不更改大量代码的最佳选择是使用:
panel1.BringToFront();
或者
panel1.SendToBack();
取决于你想要的顺序
这需要在 添加到 mainPanel
之后完成(即 mainPanel.Controls.Add(panel1);
线)
尝试使用 panel1.Dock = DockStyle.Bottom;
而不是:panel1.Dock = DockStyle.Top;