【问题标题】:What is the best way to sort controls inside of a flowlayout panel?对流布局面板内的控件进行排序的最佳方法是什么?
【发布时间】:2008-09-22 18:58:41
【问题描述】:

我正在向 FlowLayoutPanel 添加自定义控件。每个控件都有一个日期属性。我想根据 date 属性对 flowlayoutpanel 中的控件进行排序。我无法在添加控件之前对其进行预排序,因为用户可以添加更多控件。

我目前的想法是,当触发 FlowLayoutPanel 的 ControlAdded 事件时,我会遍历控件并使用 BringToFront 函数根据日期对控件进行排序。

最好的方法是什么?

【问题讨论】:

    标签: c# .net vb.net


    【解决方案1】:

    我怀疑这是最好的,但这是我目前所拥有的:

            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();
            }
    

    【讨论】:

      【解决方案2】:

      BringToFront 影响 z 顺序而不是 x/y 位置,我怀疑您想在有人在面板中添加或删除控件时对 FlowLayoutPanel.Controls 集合进行排序。大概在排序代码周围使用 SuspendLayout 和 ResumeLayout。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-30
        • 2013-07-07
        • 1970-01-01
        • 2010-12-16
        • 2021-06-09
        • 2015-05-25
        • 1970-01-01
        相关资源
        最近更新 更多