public KeyValueListBox()
        {
            Items = new AeList <KeyValueListItem>();
            Items.ItemAddedEvent    += Items_ItemAddedEvent;
            Items.ItemInsertedEvent += Items_ItemInsertedEvent;
            Items.ItemRemovedEvent  += Items_ItemRemovedEvent;
            Items.ItemsClearedEvent += Items_ItemsClearedEvent;

            InitializeComponent();

            flowPanel.ControlAdded += (s, e) =>
            {
                Control c = e.Control;
                c.Width  = flowPanel.Width - 1;
                c.Margin = ItemsPadding;
                if (c.Height + c.Top >= Height)
                {
                    isUseScrollBar = true;
                    ChangeControlsWidth(isUseScrollBar);
                }
            };

            flowPanel.ControlRemoved += (s, e) =>
            {
                // 如果控件通过其他方式移除(非Items中移除),需要在Items中将其移除
                Items.Remove((KeyValueListItem)e.Control);
                var controls = flowPanel.Controls;
                int count    = controls.Count;

                if (count == 0)
                {
                    return;
                }
                Control c = controls[count - 1];
                if (c.Height + c.Top >= Height)
                {
                    isUseScrollBar = false;
                    ChangeControlsWidth(isUseScrollBar);
                }
            };

            flowPanel.SizeChanged += (s, e) =>
            {
                var controls = flowPanel.Controls;
                int count    = controls.Count;

                if (count == 0)
                {
                    return;
                }
                Control c = controls[count - 1];
                isUseScrollBar = (c.Height + c.Top >= Height);
                ChangeControlsWidth(isUseScrollBar);
            };
        }
 private void Items_ItemInsertedEvent(AeList <KeyValueListItem> list, ListItemsChangedEventArgs <KeyValueListItem> e)
 {
     // 不能做插入操作,当添加处理
     Items_ItemAddedEvent(list, e);
 }
 private void Items_ItemAddedEvent(AeList <KeyValueListItem> list, ListItemsChangedEventArgs <KeyValueListItem> e)
 {
     flowPanel.Controls.Add(e.Item);
 }
 private void Items_ItemsClearedEvent(AeList <KeyValueListItem> list, EventArgs e)
 {
     flowPanel.Controls.Clear();
 }