Why the MessageBox and CheckBox apprears in Design-Time when changing value of the First property and do not when adding item to Second?

```
    private string _first;
    [Description(""), Category("GostcompSettings"), DefaultValue("27017")]
    public string First
    {
        get { return __first; }
        set
        {

            _searchAreasChceckBoxList.Clear();
            pPanelWithCheckboxies.Controls.Clear();
            int x = 10;
            int y = 10;

            CheckBox _tempCheck = new CheckBox();
            _tempCheck.Checked = true;
            _tempCheck.Location = new Point(x, y);

            _searchAreasChceckBoxList.Add(_tempCheck);
            pPanelWithCheckboxies.Controls.Add(_tempCheck);

            MessageBox.Show("zmiana");
            _first = value;
        }
    }

    private Collection<bool> _second= new Collection<bool>();
    [Description(""), Category("*")]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public Collection<bool> Second
    {
        get
        {
            return _second;
        }
        set
        {

            _searchAreasChceckBoxList.Clear();
            pPanelWithCheckboxies.Controls.Clear();
            int x = 10;
            int y = 10;

            CheckBox _tempCheck = new CheckBox();
            _tempCheck.Checked = true;
            _tempCheck.Location = new Point(x, y);

            _searchAreasChceckBoxList.Add(_tempCheck);
            pPanelWithCheckboxies.Controls.Add(_tempCheck);

            MessageBox.Show("*");
            _second= value;
        }
    }

```

It's the same scenario when I change Collection to List...
Values are kept (or added to Collection in Second case) and designer generate code for InitializeComponent().

EDIT after @taffer answear

```
public class SearchAreaInfo
{
    public SearchAreasEnum searchArea
    {
        get; set;
    }
}

public class SearchAreaInfoCollection : Collection<SearchAreaInfo>
{
    private Panel _checkboxParent;

    public SearchAreaInfoCollection(Panel checkboxParent) : base()
    {
        _checkboxParent = checkboxParent;
    }

    // called on Add/Insert
    protected override void InsertItem(int index, SearchAreaInfo item)
    {
        base.InsertItem(index, item);
        RepaintChackboxPanel();
    }

    // called on Remove/RemoveAt
    protected override void RemoveItem(int index)
    {
        base.RemoveItem(index);
        RepaintChackboxPanel();
    }

    // called when an element is set by the indexer
    protected override void SetItem(int index, SearchAreaInfo item)
    {
        base.SetItem(index, item);
        RepaintChackboxPanel();
    }

    private void RepaintChackboxPanel()
    {
        //_searchAreasChceckBoxList.Clear();
        _checkboxParent.Controls.Clear();
        int x = 0;
        int y = 0;

        foreach (var item in this)
        {
            CheckBox _tempCheck = new CheckBox();
            _tempCheck.Checked = true;
            _tempCheck.Location = new Point(x, y);
            _tempCheck.BringToFront();

            //_searchAreasChceckBoxList.Add(_tempCheck);
            _checkboxParent.Controls.Add(_tempCheck);                
            x += 5;
            y += 5;
        }
        _checkboxParent.Invalidate();
    }
}

    private SearchAreaInfoCollection _searchAreas;
    [Description(""), Category("GostcompSettings")]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public SearchAreaInfoCollection SearchAreas
    {
        get
        {
            return _searchAreas;
        }
    }

```

Now the prooblem is that: when I add let's say third item to the collection in Editor it draws only one checkbox but should draw 3 checkboxes...
Moreover in debugging I see that foreach loop goes then 3 times: 1st collection has 1 item , 2nd time collection has 2 items and third time collection has 3 items, but finally I see just one checkbox in \_checkboxPanel.