Here is the code that should be used for custom sub-properties private void OnCreateItem(object sender, CreatePropertyGridItemEventArgs e) { e.Item = new MyPropertyGridItem((PropertyGridTableElement)sender, e.Parent); } As visual studio would be happy of you only provide a constructor with one argument when you inherit from PropertyGridItem you have no way of knowing that you need a second one where the parent should be the second argument. The proper way to handle this would be to set the parent internally.