在FlowLayout面板内部对控件进行排序的最佳方法是什么?
时间:2020-03-06 14:33:27 来源:igfitidea点击:
我正在向FlowLayoutPanel添加自定义控件。每个控件都有一个date属性。我想根据date属性对flowlayoutpanel中的控件进行排序。在添加控件之前,我无法对其进行预排序,因为用户可以添加更多控件。
我当前的想法是触发FlowLayoutPanel的ControlAdded事件时,我在控件中循环并使用BringToFront函数根据日期对控件进行排序。
做这个的最好方式是什么?
解决方案
BringToFront影响z顺序而不影响x / y位置,我怀疑我们想在有人在面板中添加或者删除控件时对FlowLayoutPanel.Controls集合进行排序。可能在排序代码周围使用SuspendLayout和ResumeLayout。
我怀疑这是最好的,但到目前为止是我所拥有的:
SortedList<DateTime,Control> sl = new SortedList<DateTime,Control>(); foreach (Control i in mainContent.Controls) { if (i.GetType().BaseType == typeof(MyBaseType)) { MyBaseType iTyped = (MyBaseType)i; sl.Add(iTyped.Date, iTyped); } } foreach (MyBaseType j in sl.Values) { j.SendToBack(); }