在C#中的另一个控制值之前添加控制值

时间:2012-05-09 13:20:17

标签: c# winforms panel flowlayoutpanel

我有一个“FlowLayoutPanel”,想要添加一系列“UserControl”:

  

mainPanel.Controls.Add(FX);

在旧版本之后添加的每个新用户控件,我想在添加的上一个用户控件之前添加新的usercontrol我该怎么做?我没有找到mainPanel.Controls.AddAt(...)mainPanel.Controls.Add(index i, Control c)mainPanel.Controls.sort(...)或......等任何功能。

4 个答案:

答案 0 :(得分:22)

您可以使用SetChildIndex方法。类似的东西(也许你需要摆弄凹凸):

var prevIndex = mainPanel.Controls.IndexOf(previouslyAdded)
mainPanel.Controls.Add(fx);
mainPanel.Controls.SetChildIndex(fx, prevIndex); 

答案 1 :(得分:3)

通过它的声音你想要改变flowdirection属性,以便添加最新的控件添加到顶部

flowLayoutPanel1.FlowDirection = FlowDirection.BottomUp;

或者你可以

 Label label1 = new Label();
 flowLayoutPanel1.Controls.Add(label1);
 label1.BringToFront();

答案 2 :(得分:0)

纠正自己:myPanel.Controls.AddAt(index, myControl)

答案 3 :(得分:0)

这样的东西会按字母顺序添加控件。

                    FlowLayoutPanel flowLayoutPanel = ...; // this is the flow panel
                    Control control = ...; // this is the control you want to add in alpha order.

                    flowLayoutPanel.SuspendLayout();
                    flowLayoutPanel.Controls.Add(control);

                    // sort it alphabetically
                    for (int i = 0; i < flowLayoutPanel.Controls.Count; i++)
                    {
                        var otherControl = flowLayoutPanel.Controls[i];
                        if (otherControl != null && string.Compare(otherControl.Name, control.Name) > 0)
                        {
                            flowLayoutPanel.Controls.SetChildIndex(control, i);
                            break;
                        }
                    }

                    flowLayoutPanel.ResumeLayout();