void RefreshPassengers()
        {
            var items = _cart.Passengers;

            pPassenger.SuspendLayout();
            ps.RefreshPassengerList();

            var lvItems    = pPassenger.Controls.Cast <ButtonX>().ToArray();
            var lvItemTags = lvItems.Select(s => s.Tag as Passenger).MapToHashSet();

            //删除没有的
            lvItems.Where(s => !items.Contains(s.Tag as Passenger)).ToArray().ForEach(pPassenger.Controls.Remove);

            //插入没有的
            items.Except(lvItemTags).ForEach(s =>
            {
                var btn = new ButtonX()
                {
                    ColorTable        = eButtonColor.Flat,
                    Text              = $"<b>{s.Name}</b> <font size=\"-1\" color=\"gray\">{s.TypeName}/{s.IdTypeName}</font>",
                    Tag               = s,
                    AutoExpandOnClick = true,
                    Padding           = new Padding(10)
                };

                //子项
                if (s.Type == 1)
                {
                    var addChild    = new ButtonItem("addchild", "添加儿童票");
                    addChild.Click += (_1, _2) =>
                    {
                        var pc = s.CreateChild();
                        items.Add(pc);
                    };
                    btn.SubItems.Add(addChild);
                }

                var deleteItem    = new ButtonItem("delete", "删除");
                deleteItem.Click += (_1, _2) => items.Remove(s);
                btn.SubItems.Add(deleteItem);

                pPassenger.Controls.Add(btn);
                btn.SetToPreferredSize();
            });

            pPassenger.ResumeLayout(true);

            //达到上限后禁止编辑
            ps.Enabled = _cart.Passengers.Count < 3;
        }