我正在向FlowLayoutPanel添加自定义控件。每个控件都有一个日期属性。我想基于date属性对flowlayoutpanel中的控件进行排序。在添加控件之前,我无法预先控制它们,因为用户可以添加更多控件。
我当前的想法是当触发FlowLayoutPanel的ControlAdded事件时,我遍历控件并使用BringToFront函数根据日期对控件进行排序。
这样做的最佳方式是什么?
答案 0 :(得分:3)
我怀疑这是最好的,但到目前为止我是这样:
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();
}
答案 1 :(得分:0)
BringToFront影响z顺序而不影响x / y位置,我怀疑你想在有人添加或删除面板中的控件时对FlowLayoutPanel.Controls集合进行排序。可能在排序代码周围使用SuspendLayout和ResumeLayout。