14

「FlowLayoutPanel」があり、それに一連の「UserControl」を追加したいと思います。

mainPanel.Controls.Add(fx);

古いユーザーコントロールの後に新しいユーザーコントロールを追加するたびに、追加された前のユーザーコントロールの前に新しいユーザーコントロールを追加したいのですが、どうすればよいですか?mainPanel.Controls.AddAt(...)ormainPanel.Controls.Add(index i, Control c)またはmainPanel.Controls.sort(...)or...のような機能は見つかりませんでした。

4

4 に答える 4

26

SetChildIndexメソッドを使用できます。次のようなもの(多分あなたは不名誉をいじる必要があります):

var prevIndex = mainPanel.Controls.IndexOf(previouslyAdded)
mainPanel.Controls.Add(fx);
mainPanel.Controls.SetChildIndex(fx, prevIndex); 
于 2012-05-09T13:27:07.887 に答える
4

その音によって、追加された最新のコントロールが一番上に追加されるように、flowdirection 属性を変更したい

flowLayoutPanel1.FlowDirection = FlowDirection.BottomUp;

またはあなたができる

 Label label1 = new Label();
 flowLayoutPanel1.Controls.Add(label1);
 label1.BringToFront();
于 2012-05-09T13:23:12.657 に答える
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();
于 2013-10-11T00:28:44.227 に答える
0

自分を正す:myPanel.Controls.AddAt(index, myControl)

于 2012-05-09T13:23:34.373 に答える