C# 如何反转FlowLayoutPanel?

C# 如何反转FlowLayoutPanel?,c#,flowlayoutpanel,controlcollection,C#,Flowlayoutpanel,Controlcollection,我正在尝试反转FlowLayoutPanel中控件的顺序 我尝试将ControlCollection转换为数组,然后将其反转,清除ControlCollection,然后读取控件。但这似乎没有计划好的效果 以下是我使用的代码: private static void ReverseLayout(Control control, bool suspend = true) { if (suspend) control.SuspendLayout(); Control[] newC

我正在尝试反转FlowLayoutPanel中控件的顺序

我尝试将ControlCollection转换为数组,然后将其反转,清除ControlCollection,然后读取控件。但这似乎没有计划好的效果

以下是我使用的代码:

private static void ReverseLayout(Control control, bool suspend = true) {
     if (suspend) control.SuspendLayout();
     Control[] newCC = new Control[control.Controls.Count];
     control.Controls.CopyTo(newCC, 0);
     Array.Reverse(newCC);
     control.Controls.Clear();
     //control.Controls.AddRange(newCC);
     for (int i = 0; i < newCC.Length; i++) {
        newCC[i].Location = new System.Drawing.Point(); // maybe? no :\
        newCC[i].TabIndex = i; // maybe? no :\
        control.Controls.Add(newCC[i]);
     }
     if (suspend) control.ResumeLayout(false);
  }
private static void ReverseLayout(控制,bool suspend=true){
if(suspend)控件。SuspendLayout();
Control[]newCC=新控件[Control.Controls.Count];
Controls.CopyTo(newCC,0);
Array.Reverse(newCC);
Controls.Controls.Clear();
//control.Controls.AddRange(newCC);
for(int i=0;i
您的代码似乎比需要的更复杂。尝试将控件放入
列表中
,然后调用reverse,将集合放回:

int firstTabIndex = flp.Controls[0].TabIndex;
List<Control> controls = flp.Controls.Cast<Control>().ToList();
flp.Controls.Clear();
controls.Reverse();
flp.Controls.AddRange(controls.ToArray());
int firstTabIndex=flp.Controls[0].TabIndex;
列表控件=flp.controls.Cast().ToList();
flp.Controls.Clear();
控件。反向();
flp.Controls.AddRange(Controls.ToArray());
对于TabIndex属性,必须重新应用该值:

for (int i = 0; i < flp.Controls.Count; ++i) {
  flp.Controls[i].TabIndex = firstTabIndex + i;
}
for(int i=0;i
根据,有一个属性具有以下描述“获取或设置一个值,该值指示FlowLayoutPanel控件的流向”。不幸的是,我的文档已损坏,并且没有显示名称。我猜它叫做FlowDirection,值是LeftToRight,等等。。但是,请尝试使用intellisense,看看它是否提供了正确值的洞察力。这只是在面板中显示随后添加的对象的位置的更改。准备就绪的对象将不会被触摸。您从何处获得“Cast().ToList()”?ControlCollection使用Linq没有这样的定义;但据我所知,这并没有改变FlowLayoutPanel的行为,它似乎已经失去了正确安排重新添加的数据的能力controls@globalenemy您使用的是什么版本的.net?Cast是可枚举类的扩展,需要对System.Linq的引用。@GlobalElemy不工作怎么办?我只是更新了关于TabIndex的问题。仍然没有完成这项工作。顺便说一句,您的代码现在完全相同,只是您使用的是lst而不是数组。您仍然可以将其转换为数组。复杂的代码到此为止。但是获取tabindex的步骤是好的。我自己也错过了。(顺便说一句,我不需要太修改tabindex。那只是我自己的一次尝试)